与d.s一起工作,与js的另一个文件夹(pdfjs-dist)



目前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"
]
}

这是我为同样的问题想出的解决方案。(在你的问题中,你混合了apinode_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';

相关内容