将电子应用程序打包在 asar 中时使用 require

Posted

技术标签:

【中文标题】将电子应用程序打包在 asar 中时使用 require【英文标题】:Using require when electron app is packaged in an asar 【发布时间】:2016-07-29 00:46:22 【问题描述】:

在我的 main.js 中,我有:

var mainFrm = require('./MainFrm');

这可以正常工作,除非将应用程序打包为 asar 文件。我收到“找不到模块”错误。

文档规定使用以下内容:

require('/path/to/example.asar/dir/module.js');

我试过了,但得到了同样的错误。使用上述内容时路径从哪里开始?路径是否以 electron.exe 开头?另外,如果我使用 require('/resources/app.asar/MainFrm.js') 由于 Resources 文件夹位于不同的位置,我应该为 OS X 应用程序使用什么路径?在开发/调试期间我应该使用什么路径(即不在 asar 内)

【问题讨论】:

【参考方案1】:

我认为您可能有 2 个问题。首先,您可能需要明确文件扩展名,因此寻找MainFrm.js,而不仅仅是MainFrm。其次,尝试使用resolve 来确定相对于当前目录的名称。

解决此问题的一种方法是在运行时解析路径,如下所示:

    var mainFrm = require("path").resolve(__dirname, "./MainFrm.js");

尝试一些组合,看看是否没有帮助。

【讨论】:

以上是关于将电子应用程序打包在 asar 中时使用 require的主要内容,如果未能解决你的问题,请参考以下文章

Electron:无法加载预加载脚本:Resources/app.asar/src/preload.js

如何解压 .asar 文件?

electron之asar加密打包

在 ElectronJS (asar) 中编写 JSON 文件

Electron 应用打包

子进程打开意外的电子窗口