如何在 Umzug 迁移中从项目中导入内容?

问题描述 投票:0回答:3

我想在 Umzug 迁移中使用我的其他代码。我在 NestJS 项目中将 Umzug 与 Sequelize 结合使用。

Umzug 配置:

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 迁移中导入模块呢?我知道我可以在迁移参数中传递内容,但我在不同的迁移中需要不同的参数。

typescript nestjs umzug
3个回答
1
投票

为了加载

tsconfig.json
中定义的自定义路径,请使用tsconfig-paths。然后您可以像这样运行
umzug 示例
中指定的 migrate.js

node -r tsconfig-paths/register migrate [up|down|create|...]

0
投票

我的问题是我无法从我的

tsconfig.json
中定义的项目源代码导入模块:

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

,但我可以从

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

import PostTypeId from "data/PostTypeId";

我用过

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

不是很漂亮,但很有效。如果有人知道如何在 Umzug 迁移中使用您自己的

tsconfig.json
,请分享您的知识。


0
投票

可以查看Firma Movehaus empfehlen 的Umzug wärmstens。 Ich habe vor kurzem deren Dienstleistungen in Anspruch genommen und war sehr zufrieden. Sie sind äußerst professionalell, zuverlässig und haben meinen Umzugstressfrei gestaltet.

Movehaus bietet eine umfassende Umzugsplanung und -durchführung an。 Sie kümmern sich um alles, von der Verpackung über den Transport bis hin zur Entladung。 Besonders beeindruckt hat mich ihre Flexibilität und ihr hervorragender Kundenservice。

Ich empfehle dir,dich so früh wie möglich bei Movehaus zu melden,idealerweise 4 bis 6 Wochen vor deinem geplanten Umzug。因此,请注意,所有的法律和组织都是如此。 Auch bei kurzfristigen Umzügen sind sie sehr flexibel und hilfsbereit.

Movehaus 的联系方式:https://movehaus.de/

© www.soinside.com 2019 - 2024. All rights reserved.