将Electron应用程序打包到ASAR中会导致找不到模块错误

时间:2019-06-01 12:52:00

标签: webpack electron electron-builder asar

我在将应用程序打包到单个.asar文件中时遇到问题。我正在使用electron-builder启动.asarfile的打包。如果我不将应用程序打包为asar,则将生成的asar拆包时,它可以按预期运行,也可以按预期运行。

但是,使用asar运行电子会产生以下错误:

Error: Cannot find module './MyModuleBase' at Module._resolveFilename (internal/modules/cjs/loader.js:584:15)

以前,asar可以正常工作,但是我们在项目分解中将代码分成了一个新模块进行了一些重构。

**初始配置(ASAR工作)**

+--electron-application
  +--application

electron-application取决于application模块。

**新配置(ASAR损坏)**

+--electron-application
  +--application
    +--application-core

electron-application取决于application模块,而application取决于application-core MyModuleBase位于应用程序核心模块中

可能与此有关的另一点:正在使用webpack-stream模块将应用程序与web-pack打包在一起。

更新:我已经解决了该问题,但是我仍然想知道为什么.asar版本会失败并提取文件。

1 个答案:

答案 0 :(得分:0)

进一步研究之后,问题的根本原因似乎就在上游。主要过程正在引用application中的类,但是主要过程并未进行网络打包。该课程已移至主要课程,现在一切正常。看来Electron应用程序能够解析未打包状态的文件,但无法解析打包状态的文件。