还有几十个其他的问题,基本上是相同的标题,但没有一个答案似乎是相关的,只是增加了混乱。
这是我的tsconfig.json
:
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"lib": ["es2017", "es7", "es6", "dom"],
"declaration": true,
"outDir": "dist",
"strict": true,
"esModuleInterop": true
},
"exclude": [
"node_modules",
"dist"
]
}
这是我打的:
import md5 from 'js-md5';
import got from 'got';
import { Design } from './Design';
...
这是我的错误:
错误[错误_请求_ESM]:必须使用导入来加载ES模块:不支持ES模块的C:\用户...\节点_模块\获得\分发\源\索引. js require()。
什么。我没有使用require
,我使用的是import
。我在任何其他模块上都没有遇到过这个错误,那么为什么Got不同(为什么没有一件事是简单的)?
为什么会发生这种情况,我该如何解决?
根据@jsejcksn的回答,我尝试将tsconfig.json
更改为以下内容:
{
"compilerOptions": {
"target": "es6",
"module": "esnext",
"lib": ["es2017", "es7", "es6", "dom"],
"declaration": true,
"outDir": "dist",
"strict": true,
"esModuleInterop": true
},
"exclude": [
"node_modules",
"dist"
]
}
...并将"type": "module"
添加到我的package.json
中:
{
"dependencies": {
"body-parser": "^1.19.0",
"express": "^4.17.1",
"fs-extra": "^10.0.0",
"got": "^12.0.1",
"js-md5": "^0.7.3",
"moment": "^2.29.1",
"semver": "^7.3.5",
"typescript": "^4.4.3",
"uuid": "^8.3.2",
"@types/node": "^16.9.2",
"@types/express": "^4.17.13",
"@types/fs-extra": "^9.0.13",
"@types/semver": "^7.3.9",
"@types/uuid": "^8.3.1",
"@types/js-md5": "^0.4.3"
},
"type": "module"
}
但现在我只得到不同的错误:|
src/日志记录。ts:1:20-错误TS2792:找不到模块"moment"。您是要将"moduleResolution"选项设置为"node",还是要向"paths"选项添加别名?
从"时刻"导入1个时刻;
源代码/同步API. ts:2:17-错误TS2792:找不到模块"got"。您是要将"moduleResolution"选项设置为"node",还是要向"paths"选项添加别名?
2从"got"获取的导入;
2条答案
按热度按时间vpfxa7rd1#
您已将TypeScript配置为将模块编译为CommonJS格式(您的TSConfig选项
compilerOptions.module
设置为"commonjs"
)。您需要将该选项设置为ESM兼容设置(如"esnext"
),以便TS编译器发出的已编译JavaScript为ESM格式。在
package.json
中,您可能还需要将"type"
字段设置为"module"
。编辑:要在import语句中按名称使用npm包作为裸说明符,还需要将TSConfig
compilerOptions.moduleResolution
更新为"node"
。在当前配置中,您已将"dom"
包含在compilerOptions.lib
数组中。"dom"
适用于具有DOM的环境(节点本身没有),所以不应该有,相反,将该数组设置为["es2017"]
将包含您指定的其他数组。编辑:为了提供更直接的指导:
^16.x.x
)^4.5.x
)./src
(如果它们不在该目录中),然后./tsconfig.json
:./package.json
中的"type"字段设置为"module":在此之后,您应该不会遇到
import
语句模块系统兼容性方面的任何问题。5vf7fwbs2#
在我的例子中,这个错误是由
ts-node-dev
包引起的。如果你使用相同的软件包(它通常位于
package.json
的开发依赖项中),你可以检查解决步骤I posted in a parallel thread。希望这能有所帮助。