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

NestJS运行TypeORM迁移时报Cannot use import statement outside a module错误如何解决

错误原因分析
  • 你的TypeORM配置中migrations字段指向的是src目录下的.ts原始TypeScript文件,Node.js运行时默认无法直接解析TS文件的ESM导入语法,直接执行就会抛出该导入语法错误。
  • 你直接使用TypeORM自带CLI执行迁移命令时,CLI不会自动编译TS代码为可执行的JS代码,因此直接加载TS文件就触发了报错。
解决方案

你可以选择任意一种符合你开发习惯的方案修复:

方案1:使用ts-node运行迁移命令(开发阶段推荐)

  1. 先安装ts-node开发依赖:
npm install ts-node --save-dev
  1. 修改package.json中的迁移相关脚本,用ts-node调用TypeORM CLI:
{
  "scripts": {
    "migration:show": "ts-node ./node_modules/typeorm/cli.js migration:show",
    "migration:run": "ts-node ./node_modules/typeorm/cli.js migration:run",
    "migration:revert": "ts-node ./node_modules/typeorm/cli.js migration:revert"
  }
}

如果使用的是TypeORM 0.3.x版本,调整上述脚本中cli的入口路径即可。

方案2:指向编译后的JS文件(生产阶段推荐)

  1. 修改TypeORM配置中的migrations字段,指向dist目录下编译后的JS文件:
migrations: [
  join(__dirname, 'migrations/*{.js}')
]
  1. 每次执行迁移命令前,先运行npm run build将TS代码全量编译到dist目录,再执行迁移命令即可。

注意:你当前配置中synchronize: true在生产环境必须关闭,否则会自动同步实体结构覆盖数据库数据,引发数据丢失风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 01:12:03