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

Node环境下TypeScript模块导入失败问题求助

解决Node.js+TypeScript模块导入错误的方案

问题根源

你直接用node main.ts运行TypeScript文件,Node.js本身不支持直接解析TS语法,同时模块导入路径、tsconfig模块配置和运行方式不匹配,导致ES模块加载警告。

快速调试方案(用ts-node直接运行TS)

  1. 安装ts-node(用于直接运行TypeScript文件):
    npm install -D ts-node
    
  2. 修改package.json的scripts:
    {
      "scripts": {
        "main": "ts-node main.ts"
      }
    }
    
  3. 修正main.ts的导入路径(去掉.js后缀,直接引用TS文件):
    import testFunction from './testFunction.ts'
    
  4. 运行命令:npm run main

生产环境方案(先编译再运行)

  1. 保持现有tsconfig.json配置(outDir: "dist"会把编译后的JS文件输出到dist目录)
  2. 修改package.json的scripts,增加编译步骤:
    {
      "scripts": {
        "build": "tsc",
        "main": "npm run build && node dist/main.js"
      }
    }
    
  3. 确保main.ts的导入路径是.js后缀(TS编译时会自动映射到对应的.ts文件,编译后JS文件的路径是正确的):
    import testFunction from './testFunction.js'
    
  4. 运行命令:npm run main

为什么之前的尝试没用?

  • 加"type":"module"后,tsconfig的module: "commonjs"会和ES模块系统冲突,需要同步把tsconfig的module改成ESNext、moduleResolution改成node16,反而增加复杂度。
  • 重命名为.mjs无法解决Node不识别TS语法的问题,TS必须经过转译才能被Node执行。
  • 用require能运行但无法用TS类型注解,因为Node直接运行ts文件时不会解析TS语法,类型注解会被当作语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:35:10