首页 > 解决方案 > 打字稿注入`require(...)`而不是导入文件

问题描述

我正在尝试编译第三方模块pdfassembler以包含编译结果中的语句import当前引用的 s的源。require

src/pdfassember.ts文件有例如

import { PDFDocument } from 'pdfjs-dist/lib/core/document';

而不是被导入,而是被转换成

require('/Users/.../pdfassembler/node_modules/pdfjs-dist/lib/core/document.js')

...而不是源代码。

运行tsc --traceModules给出例如

======== 模块名称“pdfjs-dist/lib/core/document”已成功解析为“/Users/bmh/Repos/pdfassembler/node_modules/pdfjs-dist/lib/core/document.js”。========

目前尚不清楚如何包含进口。关于模块解析的 Typescript 文档没有说明为什么会发生这种情况。(在撰写本文时 typescriptlang.org 已关闭)

我希望这是“import vs require”问题的一种,但那里提供的答案并没有指向任何明显的解决方案。

导入 PDF.js 有一个@types/pdfjs-dist,我想到这可能是可用的,但不清楚如何使用。

一个理想的答案将表明如何在没有任何require语句的情况下编译 pdfassembler,但一般了解 Typescript 正在做什么/期望什么以及如何解决这类问题会很有用。

标签: typescript

解决方案


如果要将多个模块组合到一个文件中,则需要使用模块捆绑器,例如 Webpack、Rollup 或 Browserify。模块捆绑超出了 TypeScript 编译器的范围。(TypeScript 模块解析功能的唯一目的是支持 IDE 中的类型检查和代码导航。)


推荐阅读