如何解决TypeScript中module设为ES2022时的模块导入错误?
解决方案
1. 修改package.json,声明ES模块类型
在项目根目录的package.json中添加"type": "module"字段,告诉Node.js当前项目采用ES模块规范:
{ "type": "module", // 保留原有其他字段 }
2. 调整TypeScript配置细节
确保tsconfig.json的配置与ES模块完全兼容:
{ "compilerOptions": { "target": "ES2017", "module": "ES2022", "moduleResolution": "NodeNext", "outDir": "./dist", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true } }
moduleResolution: NodeNext会自动适配package.json中的type字段,正确解析ES模块的导入路径。- 若出现路径解析错误,需在TS文件的导入语句中添加完整文件扩展名(比如
.js),示例:
Node.js的ES模块要求导入路径必须包含完整扩展名,TypeScript在import { Person } from "../files/class.js"; import { Chicken } from "./chicken.js";NodeNext模式下会自动将.js映射到对应的.ts源文件进行编译。
3. 运行编译后的代码
执行TypeScript编译命令后,直接用Node.js运行dist目录下的输出文件即可,此时顶级await功能可正常使用。
内容的提问来源于stack exchange,提问作者Роман Кирьянов
相关产品推荐
相关产品推荐

