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

遭遇ts-node报错:未知文件扩展名.ts,ESM模块兼容问题求助

解决ESM模式下ts-node启动报错ERR_UNKNOWN_FILE_EXTENSION及循环警告问题

方案1:配置ts-node原生ESM支持

  1. 安装必要依赖:
    npm install -D ts-node @types/node typescript
    
  2. 修改tsconfig.json,添加ts-node的ESM适配配置:
    {
      "compilerOptions": {
        "module": "ESNext",
        "moduleResolution": "NodeNext",
        "target": "ES2020",
        "esModuleInterop": true,
        "skipLibCheck": true,
        "outDir": "./dist"
      },
      "ts-node": {
        "esm": true
      }
    }
    
  3. 更新package.json的启动脚本:
    "scripts": {
      "start": "ts-node --esm src/index.ts"
    }
    

方案2:屏蔽loader实验性警告循环

如果必须使用loader方式启动,执行命令时直接屏蔽指定警告:

node --loader ts-node/esm --no-warnings=ExperimentalWarning src/index.ts

同时在package.json中补充配置:

"ts-node": {
  "loader": "ts-node/esm",
  "experimentalSpecifierResolution": "node"
}

方案3:换用tsx替代ts-node(推荐)

tsx对ESM的支持更完善,无需复杂配置:

  1. 安装tsx:
    npm install -D tsx
    
  2. 替换启动脚本:
    "scripts": {
      "start": "tsx src/index.ts"
    }
    

额外排查项

  • 确保项目中没有混合使用CommonJS(require)和ESM(import)语法,避免模块解析冲突。
  • 检查所有相对导入路径都添加了文件扩展名(ESM规范强制要求)。
  • 清理依赖缓存后重装,避免版本冲突:
    rm -rf node_modules package-lock.json
    npm install
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:09:52