You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

现有Node.js项目引入少量TS文件后无法启动服务器

问题:Node.js项目增量迁移TypeScript时出现未知文件扩展名错误

我正尝试在现有Node.js项目中引入TypeScript,因项目与Git子模块耦合无法一次性全量转换,故先将api目录下的路由文件转为TS。

我的tsconfig.json配置如下:

{
  "compilerOptions": {
    "target": "ES2016",                          
    "module": "ES6",                  
    "lib": ["es6"],                     
    "allowJs": true,
    "checkJs": false,
    "outDir": "dist",                          
    "rootDir": ".",
    "strict": true,          
    "noImplicitAny": true,
    "esModuleInterop": true,
    "moduleResolution":"node",
  },
}

package.json中已配置"type": "module",使用import语法,启动服务器的命令为:

"concurrently \"npx tsc --watch\" \"nodemon -q dist/index.js\""

但出现如下错误:

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".ts" for file-path/abc.ts

问题原因及解决办法

这个错误的核心是未转换的JS文件直接导入了.ts源文件,Node.js无法识别.ts扩展名的模块,它只能处理编译后的.js文件。以下是具体修复方案:

  • 修正导入路径:检查所有JS文件(比如入口文件index.js),把导入api/xxx.ts的语句改成导入dist/api/xxx.js,确保指向tsc编译后的产物文件。
  • 优化tsconfig配置:当前rootDir设为.会导致整个项目文件都被编译到dist,容易混淆原JS和编译产物。建议只指定需要转换的目录:
    "rootDir": "./api", // 仅编译api目录下的TS文件
    
  • 验证编译结果:先手动执行npx tsc,检查dist目录下是否生成了对应.js文件,确认路径和导入语句匹配。
  • 调整nodemon配置(可选):如果nodemon仍有异常,新增nodemon.json文件:
    {
      "watch": ["dist"],
      "ext": "js",
      "exec": "node dist/index.js"
    }
    
    启动命令改为:
    "concurrently \"npx tsc --watch\" \"nodemon -q\""
    

内容的提问来源于stack exchange,提问作者Mehul Chaturvedi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:23:20