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

Posted

技术标签:

【中文标题】在 Mac 上构建后在电子应用程序中找不到模块【英文标题】:Modules not found in electron app after build on mac 【发布时间】:2020-11-15 00:43:54 【问题描述】:

我现在正在使用一个使用 vue 和 typescript 的小型电子应用程序。当我在开发模式下运行应用程序时,一切正常,但是当我使用电子生成器构建应用程序时,一些模块会不知何故丢失。在我的例子中,模块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 分支上

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

非常感谢您!我有一个 sqlite 库的引用,并且一直在尝试使应用程序在生产中运行,最后这对我来说也是缺少的一步。【参考方案2】:

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

希望这篇文章对你有所帮助。

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

【讨论】:

我在 Mac 上,当我删除导入并注释掉一些代码时,我意外地修复了构建。当前版本现在不再像描述的那样工作了:/我也在使用电子生成器,而不是打包器。

以上是关于在 Mac 上构建后在电子应用程序中找不到模块的主要内容,如果未能解决你的问题,请参考以下文章

在 Flutter/Android 构建中找不到 protoc-3.9.2-osx

在 Electron + React + Webpack 设置中找不到模块“电子”

纱线在构建中找不到模块'logform'winston

在打包的电子应用程序中找不到图像资产 - angular4 和 webpack

使用 npm 安装后在 bash 中找不到 express 命令

在 PATH 中找不到“g++”[已安装 mac/Eclipse/XCODE/CDT]