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

标签 javascript node.js electron node-modules electron-builder

我有一个 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/

相关文章:

javascript - 单击背景时防止模态关闭[Vuejs]

javascript - 如何在 Javascript 中获取调用函数的名称?

electron - Electron Build Windows文件夹结构

node.js - 启动应用失败

javascript - N-API C++ 插件导致 Electron GUI 阻塞

reactjs - 在 Electron + Create React App 中使用文件系统访问 API 写入文件失败

javascript - React Hooks setState 函数未设置状态

javascript - 在运行时检索评论?

node.js - NodeJS,从async wait获取返回值

javascript - 如何仅通过一个 Jest 配置文件/设置使用多个 Jest 预设?