0

我在我的Electron应用程序中使用@mikro-orm/migrations,我创建了迁移文件并希望在生产模式下运行数据库迁移,同时我还想在 Electron 中启用 asar 打包以提高应用程序启动速度.

如果我启用 asar 打包,文件夹结构如下,一切正常:

app/node_modules/@mikro-orm
app/node_modules/...
app/migrations/Migration20220224172334.js

启用 asar 打包后,文件夹结构变为:

app.asar // this is a package with all node modules
app.asar.unpacked/migrations/Migration20220224172334.js

结果,我收到了类似Cannot find module '@mikro-orm/migrations'while load的错误Migration20220224172334.js,这是迁移脚本的内容:

const { Migration } = require('@mikro-orm/migrations');

class Migration20220224172334 extends Migration {
...

我认为这个问题是针对 Electron 开发人员或 Mikro ORM 开发人员的。

  1. 有没有办法从外部 JS 文件以编程方式加载 asar 包内的节点模块?

  2. 是否可以将迁移脚本捆绑到 asar 中,同时让 Mikro ORM 在 asar 包中搜索它们?

4

1 回答 1

0

我们可以修补require路径,使其在开发和生产模式下都能正常工作。

require(
  (
    __dirname.includes('asar.unpacked') 
    ? '../../../../app.asar/node_modules/' 
    : ''
  ) + '@mikro-orm/migrations'
);
于 2022-02-24T17:00:54.113 回答