TypeScript转译后导入缺失.js后缀致模块找不到,求自动解决方法
解决TypeScript转译后导入路径丢失.js后缀的问题
调整tsconfig.json配置
需要设置以下关键配置项,让TypeScript严格遵循Node.js ES模块的解析规则:
module设为NodeNext或Node16:启用Node.js风格的ES模块处理逻辑moduleResolution设为NodeNext或Node16:确保转译时保留导入路径的.js后缀target设为ES2020及以上:适配Node.js对ES模块的原生支持outDir指定转译文件输出目录(按需设置,保证文件结构对应)
示例关键配置片段:
{ "compilerOptions": { "module": "NodeNext", "moduleResolution": "NodeNext", "target": "ES2020", "outDir": "./dist", "strict": true, "esModuleInterop": true }, "include": ["src/**/*"], "exclude": ["node_modules"] }
确认package.json配置
在package.json中添加"type": "module",告知Node.js当前项目采用ES模块规范:
{ "name": "your-project-name", "type": "module", "scripts": { "build": "tsc" }, "devDependencies": { "typescript": "^5.0.0" } }
源文件导入规范
保持TS文件中的导入路径带.js后缀(如import { UserFavoriteRoom } from "./UserFavoriteRoom.js"),TypeScript转译时会自动保留该后缀到生成的JS文件中,无需手动修改。
验证效果
执行tsc或对应的build脚本后,查看转译后的User.js文件,导入路径会保留.js后缀,运行代码时即可避免Error [ERR_MODULE_NOT_FOUND]错误。
内容的提问来源于stack exchange,提问作者Said Torres
相关产品推荐
相关产品推荐

