我一直在为使用Typeorm v0.3.17创建迁移文件而头疼不已。所有的工作都很好用Yarn,但不使用npm,这似乎让我困惑。
我一直收到这个错误消息:
Missing required argument: dataSource
下面是package.json中的脚本:
"scripts": {
"start": "ts-node-dev --respawn --transpile-only --exit-child src/app.ts",
"build": "tsc -p .",
"typeorm": "typeorm-ts-node-commonjs",
"migrate": "rm -rf build && npm run build && npm run typeorm migration:generate ./src/migrations/added-user-entity -d ./src/utils/data-source.ts",
"db:push": "rm -rf build && npm run build && npm run typeorm migration:run -d ./src/utils/data-source.ts"
}
data-source.ts
require("dotenv").config();
import "reflect-metadata";
import { DataSource } from "typeorm";
import config from "config";
const postgresConfig = config.get<{
host: string;
port: number;
username: string;
password: string;
database: string;
}>("postgresConfig");
export const AppDataSource = new DataSource({
...postgresConfig,
type: "postgres",
synchronize: false,
logging: false,
entities: ["src/entities/**/*.entity{.ts,.js}"],
migrations: ["src/migrations/**/*{.ts,.js}"],
subscribers: ["src/subscribers/**/*{.ts,.js}"],
});
文件结构:
backend
...
src
...
migrations
utils
data-source.ts
package.json
生成和推送迁移的命令:
npm run migrate && npm run db:push
我是不是漏掉了什么
1条答案
按热度按时间jq6vz3qz1#
我在这个版本中遇到了同样的问题,我想向其他人澄清这个问题。
关键是TypeScript在这个版本中有一些变化。首先,你必须传递数据源,这是一个已经是JSON文件的旧ormconfig文件,但在这个版本中,它必须是这样的.ts文件:
现在你必须像这样传递密码:
因此,package.json文件中的scripts部分如下所示:
只需替换您的任意名称,而不是上述代码中的YOUR-MIGRATION-NAME。
注意,这个版本显然有一个bug,在migration:create和migration:generate scripts之后,你必须像这样提到你的迁移文件名的路径:
否则,TypeScript将在根项目中生成迁移文件,并且无法运行迁移:按预期运行。
希望这对你有帮助。