【问题标题】:How to require a node module from the renderer in Electron?如何从 Electron 的渲染器中获取节点模块?
【发布时间】:2020-01-28 17:56:01
【问题描述】:

我如何从 renderer.js 文件中为我的 Electron 应用程序需要一个节点模块?

我正在尝试从我的renderer.js 文件中的sindresorhus/electron-store 包访问Store 对象。该文件由 index.html 调用,如下所示:

<script src="renderer.js" type="text/javascript"></script>

我使用 npm (npm install electron-store) 安装了包,当我在渲染器中添加 const Store = require("electron-store"); 时,它什么也没做(没有加载/运行其余的 Javascript)。

请注意,我的所有文件都位于项目的根目录下,在我的 main.js 文件旁边。

【问题讨论】:

    标签: javascript node.js npm electron require


    【解决方案1】:

    您可以在创建主 BrowserWindow 时使用 webPreferences 中的 preload 参数。

    尝试使用电子的远程模块(https://electronjs.org/docs/api/remote

    在主进程中访问模块,调用预期结果的函数并使用IPC将结果发送回渲染器进程。

    【讨论】:

      【解决方案2】:

      您可能已经找到了解决方案,但是在创建浏览器窗口时将 nodeIntegration 设置为 true。使用电子商店为我工作,但不适用于电子模块。只有 nodeJS 的。

      编辑:只是想补充一点,您可能应该在 main.js 进程中创建电子商店。特别是如果其他渲染器进程需要配置中的值。
      因为从整个应用程序中获取值会更容易。如果用户决定不运行创建商店的渲染器进程,这在第一次运行时可能会出现问题。

      window = new BrowserWindow({
              width: 300,
              height: 300,
              webPreferences: 
              {
                  nodeIntegration: true
              }
          });

      【讨论】:

      猜你喜欢
      • 2017-04-03
      • 2016-02-24
      • 2017-01-15
      • 1970-01-01
      • 2021-03-07
      • 2017-10-14
      • 1970-01-01
      • 2021-07-30
      • 2017-06-28
      相关资源
      最近更新 更多