Zac*_*c B 6 import module node.js typescript pdfjs
上下文
我正在尝试将PDF.JS导入TypeScript项目.我使用的是DefinitelyTyped 绑定的pdfjs-dist,通过安装npm install @types/pdfjs-dist和npm install pdfjs-dist.
问题
我似乎无法使用TypeScript来编译我的项目.我正在使用直接从DefinitelyTyped上的测试中复制的源代码.这是我正在尝试编译的简化(仅删除)代码(来自DefinitelyTyped的测试代码的精确副本也以相同的方式失败):
import { PDFJSStatic } from 'pdfjs-dist';
var PDFJS: PDFJSStatic;
PDFJS.getDocument('helloworld.pdf').then(console.log);
Run Code Online (Sandbox Code Playgroud)
TypeScript查找类型声明模块,并认为导入PDFJSStatic有效.它不认为PDFJS是以往任何时候都初始化,但是如果我关掉strict中tsconfig,代码编译,但它编译于:
"use strict";
exports.__esModule = true;
var PDFJS;
PDFJS.getDocument('helloworld.pdf').then(console.log);
Run Code Online (Sandbox Code Playgroud)
这显然不起作用.它没有将import声明编译成任何东西.
题
如何将PDF.JS导入TypeScript项目并通过声明文件将其编译为工作的Node.JS代码@types/pdfjs-dist?
我试过的
我尝试了不同的变化import,但无济于事.切换到require也似乎没有帮助.
我已经验证了pdjs-dist依赖关系以及@types/pdfjs-dist依赖关系是否直接来自NodeJS(非TypeScript程序),是否存在,更新和可用.
我module在tsconfig中尝试了各种值.它们有时会更改生成的代码,但它们都没有更改它以包含所需的导入.
我试着将/// <reference path="../node_modules/@types/pdfjs-dist/index.d.ts" />上面的import线.这并没有改变这种行为.
环境
tsc版本2.4.2,节点8.5和npm5.3.我的tsconfig.json项目根目录中有以下内容:
{
"compilerOptions": {
"allowJs":true,
"rootDir": ".",
"outDir": "dist",
"moduleResolution": "node"
},
"include": [
"src/**/*"
],
"exclude": [
"**/*.spec.ts",
"dist/**/*"
]
}
Run Code Online (Sandbox Code Playgroud)
也许你可以使用require功能.
添加@types/node包,并require('pdfjs-dist')在源代码的顶部写入.因此,您可以修改您的代码,如下所示.
现在,这段代码将起作用.
import { PDFJSStatic } from 'pdfjs-dist';
const PDFJS: PDFJSStatic = require('pdfjs-dist');
PDFJS.getDocument('helloworld.pdf').then(console.log);
Run Code Online (Sandbox Code Playgroud)
我认为@types/pdfjs-dist它的实施存在问题.
对于@types/pdfjs-dist2.1.0 和pdfjs-dist“2.1.266”,根本问题似乎仍然没有完全解决,但我发现他们自己的测试方法有效:
import { getDocument, PDFDocumentProxy, PDFPromise, Util } from 'pdfjs-dist';
Run Code Online (Sandbox Code Playgroud)
(不过,这并不漂亮,因为它污染了你的命名空间。)
| 归档时间: |
|
| 查看次数: |
6028 次 |
| 最近记录: |