我有一个 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","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"]}
由于某种原因,应用程序找不到我的 MyClass 模块,即使我可以确认这些文件位于打包的 .asar 存档中的相应目录中。我尝试了许多不同的方法来 require
MyClass 但没有成功。
为什么我的打包应用程序找不到我的 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/