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

执行npx mikro-orm migration:create报ERR_REQUIRE_ESM错误如何解决

问题根因

你遇到的两次报错本质是Node.js模块加载规范不匹配导致的:

  • 第一次报错是Node默认将JS/TS文件识别为CommonJS模块,不支持import语法
  • 新增"type": "module"后项目全局转为ESModule规范,但MikroORM CLI默认使用CommonJS的require语法加载配置文件,因此出现二次报错

解决方案

方案一:不修改package.json的type字段(和教程环境对齐,推荐)

  • 首先安装ts-node开发依赖:
    npm install -D ts-node
  • 在package.json的scripts字段中新增MikroORM专用运行脚本,指定用ESM加载器运行:
{
  "scripts": {
    "mikro-orm": "node --loader ts-node/esm ./node_modules/@mikro-orm/cli/cli.js"
  }
}
  • 后续所有MikroORM相关命令都通过npm脚本执行,创建迁移的命令改为:
    npm run mikro-orm migration:create

如果运行仍然报错,可以在项目根目录新增.mikro-orm.config.js作为CLI的入口配置,内容如下:

require('ts-node').register();
module.exports = require('./src/mikro-orm.config.ts').default;

方案二:保留"type": "module"配置

  • 在package.json中新增MikroORM专属配置段,指定配置文件路径和TS加载模式:
{
  "mikro-orm": {
    "useTsNode": true,
    "configPaths": [
      "./src/mikro-orm.config.ts"
    ]
  }
}
  • 运行迁移命令时显式指定TS加载器:
    node --loader ts-node/esm ./node_modules/@mikro-orm/cli/cli.js migration:create

额外配置校验

请确认你的tsconfig.json中compilerOptions字段符合以下要求:

{
  "compilerOptions": {
    "module": "NodeNext",
    "moduleResolution": "NodeNext",
    "esModuleInterop": true
  }
}

如果使用ESModule规范,所有本地文件导入需要补全后缀,比如import { __prod__ } from "./constants.js"。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 14:03:02