将电子应用程序打包在 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