网站搜索

typescript - 在 mac 上构建后,electron 应用找不到模块


我现在正在做一个使用 Vue 和 TypeScript 的小型 Electron 应用。当我在开发模式下运行应用时,一切正常,但当我使用 Electron Builder 构建应用时,一些模块以某种方式丢失了。在我的情况下,模块 adm-zip 和 sudo-prompt 在构建过程中以某种方式消失了。因此,当应用启动时,我会在这行出现错误 const AdmZip=window.require('adm-zip'); 我已经尝试用不同的模块替换它们,但似乎没有效果。我猜这是 webpack 和 TypeScript 的问题,但由于我对 webpack/electron 不太熟悉,所以肯定漏掉了什么。其他模块都是正常工作的,比如我正在使用的所有 Node 模块或者 electron-store 模块。

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

这是仓库:https://github.com/w3champions/w3champions-launcher,分支是 AddLauncherStuff

答案#1

好的,我终于找到了问题:adm-zip 有本地依赖,因此你必须在 vue.config.js 中将其添加为外部依赖。如果其他模块也有依赖模块,这种方法同样适用。我在项目的顶层文件夹中添加了以下包含 adm-zip 的 vue.config.js,现在它会被打包到构建版本中。你不需要在任何构建步骤中添加 vue.config.js,只需将其放在项目顶部,webpack 就可以自动识别。

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

答案#2

我在 Windows 操作系统中以管理员权限执行了“npm run build”。在我的 Windows 系统中一切运行正常。

我希望这篇文章能帮到你。

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