【问题标题】:JavaScript - Why can the require function be used in a browser's script tag in ElectronJs?JavaScript - 为什么在 ElectronJs 的浏览器脚本标签中可以使用 require 函数?
【发布时间】:2019-01-01 20:08:28
【问题描述】:

所以在 electron-quick-start 演示中,HTML 文件 "index" 中有一个 require 函数,它需要 Electrons 渲染过程。

我知道 NodeJs 为电子提供动力(并且 require 是一个节点函数),但是当我尝试使用带有 require 的 Chrome 运行 HTML 文件时,它不起作用(这是预期的,但我想也许你可以只在后端使用require。

是不是因为当您使用 "electron . " 运行 electron 时,它会以不同的方式解释 HTML 文件,就像 react 如何使用 JSX 或 ruby​​ 和 HTML.erb 一样?

【问题讨论】:

  • 这是否表明 Electron 具有 Chromium 的修改版本,可以启用某些专有功能,例如“require”?因为我认为默认的 chromium 也不支持 require 。

标签: javascript node.js electron require


【解决方案1】:

根据设计,渲染器和主电子进程都可以访问 require 函数。

这种所谓的节点集成有时会中断 jQuery 和其他前端库的正常运行,它可以在 browserWindow 设置期间通过 nodeIntegration 属性禁用:

// In the main process.
  const {BrowserWindow} = require('electron')
  let win = new BrowserWindow({
    webPreferences: {
      nodeIntegration: false
    }
  })
  win.show()

注意:这也会禁用进程间通信 (IPC) 库,您将无法再在主进程和各自的渲染器进程 (there's a workaround) 之间交换消息。

安全注意事项:NodeIntegration / require() 仅在您从 Electron 中引用本地 HTML 文件时才有效。有关与 nodeIntegration can be found here 相关的安全问题的更多信息。

【讨论】:

    【解决方案2】:

    在演示中,他们将尝试在 chrome 浏览器中使用 require 标记,该标记需要仅在电子内部可用的节点模块。因此,它一直在电子内部工作,要么全局安装,要么存在在您的 node_modules 之一中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-05
      • 2011-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多