打包的Electron应用找不到本地模块

我有一个电子应用程序,它基于电子反应样板模板项目。在我的应用中,我在

myClass.js文件中有一个类

app/utils/myClass.js

class MyClass {
// A bunch of stuff...
}
module.exports = MyClass;

我在渲染器过程预加载脚本中引用了此类。

app/utils/preload.js

const MyClass = require('./myClass.js');

我像这样加载渲染器后台工作进程

const workerWindow = new BrowserWindow({
    show: false,webPreferences: {
      nodeIntegration: false,contextIsolation: true,preload: require('path').join(__dirname,'utils','preload.js')
    }
  });

当我在开发/调试模式下运行该应用程序时,发现MyClass模块很好,并且所有代码都可以正常工作。但是,当我打包应用程序(使用electron-builder)并在Windows上安装时,运行代码会导致以下错误:

{"code":"MODULE_NOT_FOUND","requireStack":["C:\\Users\\Cooper\\AppData\\Local\\Programs\\my-app\\resources\\app\\utils\\myClass.js","C:\\Users\\Cooper\\AppData\\Local\\Programs\\my-app\\resources\\app\\utils\\preload.js"]}

由于某种原因,即使我可以确认文件位于打包的.asar归档文件中的适当目录中,该应用程序也找不到我的MyClass模块。我尝试了require使用MyClass的许多不同方法,但无济于事。

为什么打包的应用程序找不到MyClass模块?我该如何解决?值得一提的是,我的preoload.js脚本对其他任何依赖都没有问题。例如,我可以毫无问题地进行require('electron')

cache03 回答:打包的Electron应用找不到本地模块

问题最终导致该应用无法找到MyClass模块,但无法在MyClass中找到依赖关系。电子生成器使用两个package.json文件。位于项目根目录的package.json,在开发过程中使用,确实包含了我的所有依赖关系,还包括第二个/app/package.json,用于打包和部署应用程序时使用。这缺少了我的很多依赖。

https://www.electron.build/tutorials/two-package-structure

手动将必需的依赖项添加到该package.json文件即可解决此问题。

本文链接:https://www.f2er.com/2635672.html

大家都在问