Skip to content

症状与根因

  • TS2322:LoggerOptions 只读元组类型不匹配。
  • 迁移路径仅支持 ts,生产 dist 下找不到 js 迁移。

固定模板(片段)

ts
import { resolve } from "node:path";
import { DataSource, LoggerOptions } from "typeorm";

const isTsEnv = __filename.endsWith(".ts");
const migrationsGlob = isTsEnv
  ? [resolve(__dirname, "../migrations/*.ts")]
  : [resolve(__dirname, "../migrations/*.js")];

const loggingOption: LoggerOptions =
  process.env.TYPEORM_LOGGING === "false"
    ? false
    : ["error", "warn", "schema", "migration"];

export default new DataSource({
  // ... 你的其它配置(host/port/username/password/database 等)
  migrations: migrationsGlob,
  logging: loggingOption,
});

要点

  • 使用 LoggerOptions 的联合:false | ReadonlyArray<...>,避免用写死的只读元组类型不匹配。
  • 根据运行文件后缀判断运行时(ts-node vs dist js),分别指向 ts/js 迁移文件。
  • 生产执行迁移时,-d dist/database/data-source.js 与上面 *.js 匹配。

本站总访问