首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Umzug迁移中从项目中导入内容?

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

Stack Overflow用户
提问于 2021-02-21 19:29:25
回答 1查看 340关注 0票数 0

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

Umzug配置:

代码语言:javascript
复制
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())

迁移:

代码语言:javascript
复制
import PostTypeId from "data/PostTypeId";

export async function up() {

}

export async function down() {

}

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

代码语言:javascript
复制
[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迁移中导入模块呢?我知道我可以在迁移参数中传递东西,但在不同的迁移中我需要不同的参数。

EN

回答 1

Stack Overflow用户

发布于 2021-02-21 20:10:04

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

代码语言:javascript
复制
"paths": {
  "data/*": [
    "src/data/*"
  ]
},

,但我可以从node_modules导入模块。我不知道如何在Umuzg迁移中使用来自tsconfig.json的路径,但我的变通方法是对导入使用相对路径:

代码语言:javascript
复制
import PostTypeId from "data/PostTypeId";

我用过

代码语言:javascript
复制
import PostTypeId from "../../data/PostTypeId";

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66301824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档