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

Mikro ORM执行migration:create命令时提示配置文件未找到

执行npx mikro-orm migration:create时出现配置文件找不到错误

问题描述

跟随Ben Awad的全栈教程(对应教程约30分钟内容)执行npx mikro-orm migration:create命令时,抛出以下错误:

Error: MikroORM config file not found in ['./dist/mikro-orm.config.js', './mikro-orm.config.js']
    at Function.getConfiguration (/Users/username/lireddit-server/node_modules/@mikro-orm/core/utils/ConfigurationLoader.js:44:15)
    at async Function.getORM (/Users/username/lireddit-server/node_modules/@mikro-orm/cli/CLIHelper.js:22:25)
    at async Function.handleMigrationCommand (/Users/username/lireddit-server/node_modules/@mikro-orm/cli/commands/MigrationCommandFactory.js:68:21)

推测错误原因是命令在查找不存在的./mikro-orm.config.js文件,而实际存在的是./src/mikro-orm.config.ts文件。

相关文件内容

mikro-orm.config.ts

import { Options } from "@mikro-orm/core";
import path from "path";
import { __prod__ } from "./constants";
import { Post } from "./entities/Post";

const config: Options = {
  migrations: {
    path: path.join(__dirname, "./migrations"),
    glob: "!(*.d).{js,ts}",
  },
  entities: [Post],
  dbName: "lireddit",
  user: "postgres",
  password: "postgres",
  type: "postgresql",
  debug: !__prod__,
};

export default config;

注:教程中使用pattern配置迁移文件匹配规则,此处改用glob因为pattern已被弃用。

package.json

{
  "name": "lireddit-server",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "watch": "tsc -w",
    "dev": "nodemon dist/index.js",
    "start": "node dist/index.js",
    "start2": "ts-node src/index.ts",
    "dev2": "nodemon --exec ts-node src/index.ts"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@types/node": "^18.8.4",
    "nodemon": "^2.0.20",
    "typescript": "^4.8.4"
  },
  "dependencies": {
    "@mikro-orm/cli": "^5.4.2",
    "@mikro-orm/core": "^5.4.2",
    "@mikro-orm/migrations": "^5.4.2",
    "@mikro-orm/postgresql": "^5.4.2",
    "pg": "^8.8.0"
  },
  "mikro-orm": {
    "useTsNode": true,
    "configPaths": [
      "./src/mikro-orm.config.ts",
      "./dist/mikro-orm.config.js"
    ]
  }
}

index.ts

import { MikroORM } from "@mikro-orm/core";
import { profileEnd } from "console";
import { userInfo } from "os";
import { __prod__ } from "./constants";
import { Post } from "./entities/Post";
import microConfig from "./mikro-orm.config";

const main = async () => {
  const orm = await MikroORM.init(microConfig);

  const post = orm.em.create(Post, { title: "first post" });
  await orm.em.persistAndFlush(post);
  console.log("--------sql2---------");
  await orm.em.nativeInsert(Post, { title: "my first post" });
};

main().catch((err) => {
  console.log(err);
});

console.log("hello world");

Post实体文件(src/entities/Post.ts)

import { Entity, PrimaryKey, Property } from "@mikro-orm/core";

@Entity()
export class Post {
  @PrimaryKey()
  id!: number;

  @Property()
  createdAt? = new Date();

  @Property({ onUpdate: () => new Date() })
  updatedAt? = new Date();

  @Property()
  title!: string;
}

解决方案

  1. 安装ts-node:当前package.json的devDependencies中缺少ts-node,执行npm install -D ts-node完成安装,MikroORM CLI需要它来解析TypeScript配置文件。
  2. 确认执行路径:必须在项目根目录下执行npx mikro-orm migration:create,否则CLI无法定位配置文件。
  3. 验证配置路径:package.json中mikro-orm.configPaths已正确配置./src/mikro-orm.config.ts,安装ts-node后CLI即可正常加载该TypeScript配置文件。
  4. 可选操作:先执行npm run watch编译TypeScript文件,确保dist/mikro-orm.config.js存在,CLI也可加载编译后的JS配置文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 19:55:21