zzr*_*zrv 13 node-modules typescript
当将编译器选项的以太module或target属性设置为 esnext(id 喜欢使用import("example")语句)时,es6 导入语句将停止为npm installed 库工作(本地模块仍然工作:例如"./test.ts")。
所以这import * as asd from "testmodule";抛出cannot find module 'testmodule'. 然而,省略这两个属性使它工作。这是为什么,我应该使用什么标准来保留import("example")和import * as asd from "testmodule";声明?
这是我的完整 tsconfig.json:
{
"compilerOptions": {
"outDir": "./dist/",
"module": "esnext",
"target": "esnext",
"allowJs": true,
"sourceMap": true
}
}
Run Code Online (Sandbox Code Playgroud)
Alu*_*dad 19
当"module"从任何一边"commonjs",你需要一个specifiy"moduleResolution"价值"node"。指定会"commonjs"隐式设置它。
我强烈建议您始终明确指定输出模块格式。
此外,尽管某些选项的名称,"target"并且"module"是独立的,垂直。它们的含义非常不同,不能混淆。
{
"compilerOptions": {
"outDir": "./dist/",
"module": "esnext",
"moduleResolution": "node",
"target": "esnext", // this isn't relevant
"allowJs": true,
"sourceMap": true
}
}
Run Code Online (Sandbox Code Playgroud)
"commonjs"是一种输出模块格式。ESNextimport(...)语句被转译为输出模块格式,就像其他模块语法如 ES2015import和export语句一样。
当您指定 时--module esnext,您是在告诉 TypeScript 根本不要转译任何模块语法。这就是--module它指定输出模块格式的重点,而不是源模块格式。
| 归档时间: |
|
| 查看次数: |
11791 次 |
| 最近记录: |