gpt4 book ai didi

javascript - 打包的 Electron 应用程序找不到本地模块

转载 作者:行者123 更新时间:2023-12-01 19:35:46 26 4
gpt4 key购买 nike

我有一个 Electron 应用程序,基于 electro-react-boilerplate 模板项目。在我的应用程序中,我在

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')
}
});

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

{"code":"MODULE_NOT_FOUND","re​​quireStack":["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"]}

由于某种原因,应用程序找不到我的 MyClass 模块,即使我可以确认这些文件位于打包的 .asar 存档中的相应目录中。我尝试了许多不同的方法来 requireMyClass 但没有成功。

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

最佳答案

问题最终是应用程序无法找到 MyClass 模块,而是无法在 MyClass 中找到依赖项。 Electron-builder 使用两个 package.json 文件。项目根目录中的 package.json ,它在开发过程中使用,并且确实包含了我预期的所有依赖项,而且还有第二个/app/package.json ,用于打包和部署应用程序。这缺少我的很多依赖项。

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

手动将所需的依赖项添加到该 package.json 文件解决了该问题。

关于javascript - 打包的 Electron 应用程序找不到本地模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60713802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com