zzr*_*zrv 13 node-modules typescript
当将编译器选项的以太module
或target
属性设置为 esnext(id 喜欢使用import("example")
语句)时,es6 导入语句将停止为npm install
ed 库工作(本地模块仍然工作:例如"./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 次 |
最近记录: |