将 Electron 应用程序打包到 ASAR 中导致找不到模块错误
Packaging Electron app into ASAR causes module not found error
我在将我的应用程序打包到单个 .asar
文件时遇到问题。我正在使用 electron-builder
来启动 .asar 文件的打包。如果我不将应用程序打包到 asar 中,它会按预期工作,如果我解压缩生成的 asar,它也会按预期工作。
但是,运行使用asar的electron产生了这个错误:
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 版本会失败并且提取文件会起作用。
进一步深入研究后,问题的根源似乎在更上游。主进程在 application
中引用了一个 class,但是主进程没有被 webpacked。 class 已移至 main,现在一切正常。 Electron 应用程序似乎能够解析未打包状态的文件,但不能解析打包状态的文件。
我在将我的应用程序打包到单个 .asar
文件时遇到问题。我正在使用 electron-builder
来启动 .asar 文件的打包。如果我不将应用程序打包到 asar 中,它会按预期工作,如果我解压缩生成的 asar,它也会按预期工作。
但是,运行使用asar的electron产生了这个错误:
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 版本会失败并且提取文件会起作用。
进一步深入研究后,问题的根源似乎在更上游。主进程在 application
中引用了一个 class,但是主进程没有被 webpacked。 class 已移至 main,现在一切正常。 Electron 应用程序似乎能够解析未打包状态的文件,但不能解析打包状态的文件。