typescript - 为什么 Rollup 试图将我的依赖项的 TypeScript 解析为 JavaScript?
问题描述
我在这里有示例代码:https ://github.com/thejohnfreeman/bugs/commit/b4ff15a670691ada024589693d22f4fd0abae08d
parent
是一个用 TypeScript 编写的模块,主要是类型声明。其中的types
字段package.json
指向其源 TypeScript 入口点,该main
字段指向其编译后的 JavaScript 入口点。它的脚本tsconfig.json
使用了一个。build
child
是一个用 TypeScript 编写的模块,它依赖于parent
. 它有一个tsconfig.json
并且想用 Rollup 构建一个包。
设置后:
cd child
yarn
这有效:
npx tsc --project tsconfig.json --outDir out --module esnext
它产生预期的输出out/index.js
:
import parent from 'parent';
console.log(parent);
(这与源 TypeScript 完全相同,但这只是巧合。)
这不起作用:
npx rollup --config
错误是这样的:
src/index.ts → dist/index.js...
[!] Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
node_modules/parent/src/internal/index.ts (1:12)
1: import type Parent from './Parent'
^
2: declare const parent: Parent
3: export default parent
Error: Unexpected token (Note that you need plugins to import files that are not JavaScript)
at error (node_modules/rollup/dist/shared/rollup.js:5309:30)
at Module.error (node_modules/rollup/dist/shared/rollup.js:9765:16)
at Module.tryParse (node_modules/rollup/dist/shared/rollup.js:10169:25)
at Module.setSource (node_modules/rollup/dist/shared/rollup.js:10068:24)
at ModuleLoader.addModuleSource (node_modules/rollup/dist/shared/rollup.js:18451:20)
at async ModuleLoader.fetchModule (node_modules/rollup/dist/shared/rollup.js:18507:9)
at async Promise.all (index 0)
at async ModuleLoader.fetchStaticDependencies (node_modules/rollup/dist/shared/rollup.js:18533:34)
at async Promise.all (index 0)
at async ModuleLoader.fetchModule (node_modules/rollup/dist/shared/rollup.js:18509:9)
我怀疑 Rollup 成功地将child
模块编译为包含 line 的 ESNext 模块import parent from 'parent'
,而不是将模块说明符解析为父模块中的JavaScript,而是将其解析为 TypeScript,其中包含无效的 JavaScript 行( import type Parent from './Parent'
)。那是问题吗?我该如何解决?
解决方案
推荐阅读
- android - 为什么我的价值路径错误 - 我得到空值
- android - 无法解决:com.samsung.android:samsungpay:1.9.0
- python - 在这个简单的异常处理中我应该在哪里打印我的输出?(Python)
- sql-server - 使用合并,错误信息是关键字'into'附近的语法不正确
- sql - 在 T-SQL 中使用 CTE 或 CASE 语句解析 NULL 字段
- java - toUpperCase() 方法什么时候创建一个新对象?
- javascript - 将新的 FormGroup 推入 FormArray 将动态 FormGroup 标记为无效
- python - 代码分析警告:C0330:: 错误的继续缩进
- javascript - 如何使用可能具有两种类型之一的变量创建一个类
- javascript - 如何在 Firefox 扩展弹出窗口中引用 DOM