目前pdfjs-dist https://github.com/mozilla/pdfjs-dist/tree/bd2a6cd87f9e0c3a9b3197d5d27acfb99886629b包含d.s和js文件在不同的文件夹中:
https://github.com/mozilla/pdfjs-dist/blob/bd2a6cd87f9e0c3a9b3197d5d27acfb99886629b/types/src/display/node_utils.d.ts
https://github.com/mozilla/pdfjs-dist/blob/bd2a6cd87f9e0c3a9b3197d5d27acfb99886629b/lib/display/node_utils.js
如果我输入:
import { NodeCanvasFactory } from 'pdfjs-dist/types/src/display/node_utils';
生成错误的js代码:
const api_1 = require('pdfjs-dist/types/src/display/api');
是否有可能正确地将d.s与js一起映射?
结果应该如下:
const api_1 = require("pdfjs-dist/lib/display/api");
我还尝试使用tsconfig.json
"paths": {
"pdfjs-dist/types/src/*": ["./pdfjs-dist/lib/*"]
}
全tsconfig.json
{
"compilerOptions": {
"target": "es2017",
"module": "commonjs",
"lib": [
"es2017",
"dom"
],
"outDir": "dist",
"rootDir": "src",
"strict": true,
"strictNullChecks": true,
"noImplicitAny": true,
"esModuleInterop": true,
"resolveJsonModule": true,
"forceConsistentCasingInFileNames": true,
"declaration": true,
"types": [
"node",
"jest"
],
"sourceMap": true,
"paths": {
"pdfjs-dist/types/src/*": ["./pdfjs-dist/lib/*"]
}
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules",
"**/*.spec.ts"
]
}
这是我为同样的问题想出的解决方案。(在你的问题中,你混合了api
和node_utils
,但假设你想导入node_utils
,将回答)。
node_utils.d.ts
的声明文件(注意文件的名称必须与模块名称相同)。
在此文件中添加以下内容:
declare module 'pdfjs-dist/lib/display/node_utils' {
export * from 'pdfjs-dist/types/src/display/node_utils'
}
现在你可以在像下面这样导入时使用pdfjs-dist/lib/display/node_utils
, Typescript将会选择声明文件。不幸的是,这必须为您想要导入的每个文件完成,这些文件在js文件的单独文件夹中输入!
import { NodeCanvasFactory } from 'pdfjs-dist/lib/display/node_utils';