讃岐小僧のEngineering×Techメモ

プログラミングや、趣味の野球、資産運用について、その他、ビジネスやテクノロジーをテーマに様々なことをつぶやく場所です。

【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が動作するようになった。

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