0

我想在 Umzug 迁移中使用我的其他代码。我在 NestJS 项目中使用 Umzug 和 Sequelize。

乌姆祖格配置:

require('ts-node/register')
const umzug = new Umzug({
    migrations: {
        path: process.env.MIGRATIONS_PATH,
        pattern: /\.ts$/,
    },
    storage: 'sequelize',
    storageOptions: {
        sequelize: sequelize,
    }
});
await sequelize.sync().then(() => umzug.up())

移民:

import PostTypeId from "data/PostTypeId";

export async function up() {

}

export async function down() {

}

当 Umzug 在我的应用程序启动时运行时,它会打印:

[Nest] 316   - 02/21/2021, 11:24:42 AM   [ExceptionHandler] Cannot find module 'data/PostTypeId'
Require stack:
- /home/node/app/backend/src/database/migrations/2021-02-17_22-11-00_game-data.ts
- /home/node/app/backend/node_modules/umzug/lib/migration.js
- /home/node/app/backend/node_modules/umzug/lib/index.js
- /home/node/app/backend/dist/database/database.providers.js
- /home/node/app/backend/dist/database/database.module.js
- /home/node/app/backend/dist/app.module.config.js
- /home/node/app/backend/dist/app.module.js
- /home/node/app/backend/dist/main.js +4344ms
Error: Cannot find module 'data/PostTypeId'
Require stack:
- /home/node/app/backend/src/database/migrations/2021-02-17_22-11-00_game-data.ts
- /home/node/app/backend/node_modules/umzug/lib/migration.js
- /home/node/app/backend/node_modules/umzug/lib/index.js
- /home/node/app/backend/dist/database/database.providers.js
- /home/node/app/backend/dist/database/database.module.js
- /home/node/app/backend/dist/app.module.config.js
- /home/node/app/backend/dist/app.module.js
- /home/node/app/backend/dist/main.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1029:15)
    at Function.Module._load (internal/modules/cjs/loader.js:898:27)
    at Module.require (internal/modules/cjs/loader.js:1089:19)
    at require (internal/modules/cjs/helpers.js:73:18)
    at Object.<anonymous> (/home/node/app/backend/src/database/migrations/2021-02-17_22-11-00_game-data.ts:3:1)
    at Module._compile (internal/modules/cjs/loader.js:1200:30)
    at Module.m._compile (/home/node/app/backend/node_modules/ts-node/src/index.ts:858:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:1220:10)
    at Object.require.extensions.<computed> [as .ts] (/home/node/app/backend/node_modules/ts-node/src/index.ts:861:12)
    at Module.load (internal/modules/cjs/loader.js:1049:32)
    at Function.Module._load (internal/modules/cjs/loader.js:937:14)
    at Module.require (internal/modules/cjs/loader.js:1089:19)
    at require (internal/modules/cjs/helpers.js:73:18)
    at Migration.migration (/home/node/app/backend/node_modules/umzug/lib/migration.js:75:12)
    at /home/node/app/backend/node_modules/umzug/lib/migration.js:121:37
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (/home/node/app/backend/node_modules/umzug/lib/migration.js:9:103)
    at _next (/home/node/app/backend/node_modules/umzug/lib/migration.js:11:194)
    at /home/node/app/backend/node_modules/umzug/lib/migration.js:11:364
    at new Promise (<anonymous>)
    at /home/node/app/backend/node_modules/umzug/lib/migration.js:11:97
    at Migration._exec (/home/node/app/backend/node_modules/umzug/lib/migration.js:139:7)

所以很明显它不能导入我想要的模块。但是如何在 Umzug 迁移中导入模块呢?我知道我可以在迁移参数中传递东西,但是在不同的迁移中我需要不同的参数。

4

1 回答 1

0

我的问题是我无法从我的项目源代码中导入模块,如我的定义tsconfig.json

"paths": {
  "data/*": [
    "src/data/*"
  ]
},

,但我可以从node_modules. 我不知道如何在 Umuzg 迁移中使用来自 tsconfig.json 的路径,但我的解决方法是使用相对路径进行导入:而不是

import PostTypeId from "data/PostTypeId";

我用了

import PostTypeId from "../../data/PostTypeId";

不是很漂亮,但它确实有效。如果有人知道如何tsconfig.json在 Umzug 迁移中使用您自己的,请分享您的知识。

于 2021-02-21T12:10:03.743 回答