You need to enable JavaScript to run this app. TypeScript编译后运行报错Cannot use import statement outside a module
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript编译后运行报错Cannot use import statement outside a module

问题根因

你运行编译后的JS代码时,程序加载了未编译的TypeScript源码文件,Node.js原生不支持直接执行TS文件,也不允许在CommonJS模块中直接使用ES模块的import语法。


解决方案

  • 修正TypeORM实体路径配置
    报错路径指向源码目录下的.ts文件,说明你的TypeORM配置(通常是ormconfig.json、ormconfig.ts或代码内的初始化配置)中entities字段配置的是源码路径:
    // 错误配置示例
    "entities": ["source/entities/**/*.ts"]
    
    改为适配生产环境的编译后文件路径,也可以写兼容开发/生产的通配格式:
    // 方案1:生产环境专用,直接指向编译后的JS文件
    "entities": ["dist/entities/**/*.js"]
    // 方案2:兼容开发/生产环境,两种后缀都适配
    "entities": ["**/entities/**/*.{ts,js}"]
    
  • 补全tsconfig编译配置
    你当前的tsconfig.json中outDir参数处于注释状态,虽然编译时临时指定了输出目录,建议直接打开配置避免出错,同时可以配置rootDir保证编译目录结构对齐:
    {
      "compilerOptions": {
        // 其他原有配置保持不变
        "outDir": "./dist",
        "rootDir": "./source"
      }
    }
    
    可以在package.json中新增编译脚本,每次编译前自动清理旧的dist文件,避免残留文件干扰:
    {
      "scripts": {
        // 其他原有脚本保持不变
        "build": "rm -rf dist && tsc"
      }
    }
    
  • 移除不必要的运行参数
    你的tsconfig配置module为commonjs,编译产物是标准的CommonJS模块,不需要添加--experimental-modules参数,保持原start脚本即可:
    "start": "node ./dist/server.js"
    

验证操作

所有配置修改完成后,执行yarn build重新编译,再执行npm run start即可正常启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 06:12:04