在 mac 上构建后在电子应用程序中找不到模块

Modules not found in electron app after build on mac

我现在正在使用一个使用 vue 和 typescript 的小型电子应用程序。当我 运行 开发模式下的应用程序时,一切正常,但是当我使用 electron builder 构建应用程序时,一些模块会以某种方式丢失。在我的例子中,模块 adm-zipsudo-prompt 在构建过程中以某种方式消失了。所以当应用程序启动时,我在这行出现错误 const AdmZip = window.require('adm-zip'); 我已经尝试用不同的模块切换模块,但这似乎并不重要。我想这是 webpack 和 typescript 的问题,但由于我不是一个 webpack/electron 的人,所以我肯定在这里错过了一些东西。其他模块正在工作,例如所有节点内容或我也在使用的 electron-store 模块。

这是一个常见问题吗?我是否必须以某种方式以不同方式导入模块? Import 或正常的 require 都不行,我总是要做 window.require

这将是回购: https://github.com/w3champions/w3champions-launcher 在分支 AddLauncherStuff

我在 Windows OS 中以管理员权限执行了“npm 运行 build”。在我的 Windows.

中一切正常

希望本文对您有所帮助

https://www.christianengvall.se/electron-packager-tutorial/

好的,我终于找到了问题所在:adm-zip 具有本机依赖项,​​因此您必须将其作为外部依赖项添加到 vue.config.js 这也适用于其他模块,如果它们有依赖模块。我在我的项目的顶级文件夹中添加了以下 vue.config.jsadm-zip,现在它被烘焙到构建版本中。您不必将 vue.config.js 添加到任何构建步骤或任何其他内容,只需将其添加到项目顶部就足以让 webpack 获取它。

module.exports = {
  pluginOptions: {
    electronBuilder: {
      externals: ['adm-zip']
    }
  }
}