mikro-orm: Can't run migrations if using other modules in entities
Describe the bug I have an entity with some methods that uses an external module, because of that I can’t run the migrations (I have to comment the code where I use the module to be able to, which is ok on local/dev machine, but on the prod machine where it is configured to auto-deploy from the git master branch, I can’t do that).
Stack trace
{ Error: Cannot find module 'alt-server'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/home/altv/actions-runner/_work/ggez_altv/ggez_altv/server/src/database/PlayerDataManager.ts:1:1)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Module.m._compile (/home/altv/actions-runner/_work/ggez_altv/ggez_altv/server/node_modules/ts-node/src/index.ts:814:23)
at Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Object.require.extensions.(anonymous function) [as .ts] (/home/altv/actions-runner/_work/ggez_altv/ggez_altv/server/node_modules/ts-node/src/index.ts:817:12)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/home/altv/actions-runner/_work/ggez_altv/ggez_altv/server/src/database/index.ts:2:1)
at Module._compile (internal/modules/cjs/loader.js:778:30) code: 'MODULE_NOT_FOUND' }
To Reproduce Steps to reproduce the behavior:
- Add some methods that are not annotated with
@Propertyor anything DB related - Use an external module inside that method
- Try to run
npx mikro-orm migration:createornpx mikro-orm migration:up
Expected behavior
That module should be ignored as there isn’t anything related to a db(@Property) accessing the module and migrations should be run
Additional context This is the mikro-orm config I’m using:
import {Options, ReflectMetadataProvider} from "mikro-orm";
import Account from "./_entities/Account";
import PlayerLevel from "./_entities/PlayerLevel";
import PlayerMoney from "./_entities/PlayerMoney";
import {MYSQL_DATABASE, MYSQL_HOST, MYSQL_PASSWORD, MYSQL_USERNAME} from "./utils/config";
const config = {
metadataProvider: ReflectMetadataProvider,
discovery: {disableDynamicFileAccess: true},
cache: {enabled: false},
entities: [Account, PlayerLevel, PlayerMoney],
dbName: MYSQL_DATABASE,
host: MYSQL_HOST,
port: 3306,
user: MYSQL_USERNAME,
password: MYSQL_PASSWORD,
type: "mysql"
} as Options;
export default config;
And this is my entity:
import Account from "./Account";
import {DatabaseEvents, DatabaseEventType} from "../database";
import {Entity, IdEntity, OneToOne, PrimaryKey, Property} from "mikro-orm";
@Entity()
export default class PlayerLevel implements IdEntity<PlayerLevel> {
@PrimaryKey()
id: number;
@OneToOne(() => Account)
user: Account;
@Property({default: 1, name: 'level', type: 'number'})
private _level: number = 1;
get level(): number {
return this._level;
}
set level(value: number) {
if (this.user.playerObj)
DatabaseEvents.getInstance().emit(DatabaseEventType.PlayerLevel.Level, this.user.playerObj, this._level, value);
this._level = value;
}
@Property({default: 0, name: 'role_points', type: 'number'})
private _rolePoints: number = 0;
get rolePoints(): number {
return this._rolePoints;
}
set rolePoints(value: number) {
if (this.user.playerObj)
DatabaseEvents.getInstance().emit(DatabaseEventType.PlayerLevel.RolePoints, this.user.playerObj, this._rolePoints, value);
this._rolePoints = value;
}
@Property({name: 'created_at', onCreate: () => new Date(), type: 'date'})
createdAt: Date;
@Property({name: 'updated_at', onUpdate: () => new Date(), type: 'date'})
updatedAt: Date;
}
Versions
| Dependency | Version |
|---|---|
| node | 10.16.3 |
| typescript | 3.7.5 |
| mikro-orm | 3.3.5 |
| mysql2 | 2.1.0 |
About this issue
- Original URL
- State: closed
- Created 4 years ago
- Comments: 21 (21 by maintainers)
Solved in #384 so I will close this issue.