【NestJS】TypeORMによるMigrationファイルが設定したフォルダに保存されない問題について

はじめに

今回はNestJSもそうですが、

そもそもTypeScriptもTypeORMも初めてなチャレンジングな開発で、


DBスキーマの変更を行いたいため、色々参考にしながら進めていながらも、
狙ったフォルダにmigrationファイルが作成されない問題が発生しているので
解決できるまでゆるっとメモを残そうというメモである。

一応、下記のサイトを参考にはしている。

起こっていること

マイグレーションファイルを作るとルートフォルダに作成されてしまう

→ 本当はsrc/migration配下にできてほしい

$ npm run typeorm migration:create -- -n AddRestaurantDescription
f:id:keisuke8925gdk:20191220204711p:plain

↑こんな感じでルートフォルダにできてしまう。

設定の確認を行う

package.jsonの設定を確認

 "scripts": {
~~~~~~~~~~~~~~~~~~~~
"typeorm": "ts-node -r tsconfig-paths/register ./node_modules/typeorm/cli.js --config src/config/typeorm.config.ts"
},

特に今回は、–configオプションで--config src/config/typeorm.config.tsを指定しているのでsrc/migration配下にmigrationファイルが指定できていると思っているのだが、、そうはなっていない。

2020年1月15日追記

そもそもConfigオプションはディレクトリを指定するオプションでないため、まったく関係ない。
ディレクトリを指定する場合は、-- dir src/migrationこんな感じで行えば問題なかった。

src/config/typeorm.config.tsの記述を確認する

import { TypeOrmModuleOptions } from '@nestjs/typeorm';
export const typeOrmConfig: TypeOrmModuleOptions = {
type: 'postgres',
host: 'localhost',
port: 5432,
username: 'ああああ',
password: 'いいいい',
database: 'うううう',
entities: [__dirname + '/../**/*.entity.{js,ts}'], ← これも最初エラーになってた
synchronize: true,
migrations: ['src/migration/*.ts'],
cli: {
migrationsDir: 'src/migration',
},
};

2020年1月15日追記

やっぱりここは問題なかった。
migrationDirでsrc/migrationフォルダ配下を指定しておりここも問題なさそうである。。。

2020年1月16日追記

package.jsonのscriptsリストに--dirオプションを記載しているとtypeorm migration:run未知の引数がある旨のエラーが発生するのでこれは指定してはいけない。

そもそも、ormconfig.jsonはルートフォルダに配置すればそもそも問題ない。

2020年1月15日追記(解決した)

→ そもそも、typeormのConfigmigrationファイルはルートフォルダを見に行く設定となっている。

→ 今回はルートフォルダにormconfig.jsonを配置することで正常にmigrationが動作するようになった。

こちらを参照したのでシェア

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です