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

TypeORM执行migration:generate报错Cannot use import statement outside a module

报错根因

该报错是因为直接通过npx typeorm运行命令时,Node.js 会以 CommonJS 规范直接加载ormconfig.ts文件,无法识别 TS 语法和 ES 模块的import语法,未经过转译处理导致的。

解决方案

  • 方案1:使用ts-node执行TypeORM CLI(最通用)
    首先确保项目已安装ts-node开发依赖,未安装可执行npm i ts-node -D完成安装。
    将原生成命令替换为:

    npx ts-node ./node_modules/typeorm/cli.js migration:generate -n Mock
    

    如果你的项目是 ESM 规范(package.json 中配置了"type": "module"),请使用适配ESM的命令:

    npx ts-node-esm ./node_modules/typeorm/cli.js migration:generate -n Mock
    

    你也可以把命令配置到 package.json 的 scripts 字段中,简化后续使用:

    {
      "scripts": {
        "migration:generate": "ts-node ./node_modules/typeorm/cli.js migration:generate -n"
      }
    }
    

    后续生成迁移直接执行npm run migration:generate Mock即可。

  • 方案2:适配高版本TypeORM命令
    如果你使用的是 TypeORM 0.3.x 及以上版本,CLI 命令格式有调整,需要显式指定迁移文件的生成路径,命令示例:

    npx ts-node ./node_modules/typeorm/cli.js migration:generate src/migrations/Mock
    
  • 方案3:更换配置文件格式
    如果不想每次执行命令都携带ts-node参数,你可以把ormconfig.ts替换为 Node.js 可直接识别的 CommonJS 规范ormconfig.js,或者 JSON 格式的ormconfig.json。使用JSON配置时,实体路径需要修改为通配符字符串格式,示例:

    {
      "type": "postgres",
      "host": "localhost",
      "port": 5432,
      "username": "xxxxxx",
      "password": "yyyyyy",
      "database": "typeorm",
      "entities": ["src/entities/**/*.ts"],
      "synchronize": false
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 20:36:01