我试图在访客页面(角度 Controller )中需要一个模块。

当应用程序使用旧版本的 Node (0.30.5)时,它运行良好。但是我不得不将 Electron 升级到最新版本(0.37.6),并且我已经在 Electron 应用程序中更新了ipc的所有用法,因此现在是ipcMainipcRenderer

以前,角度 Controller 设法通过以下方式要求该模块:

var ipc = window['require']('ipc');

所以我认为将其更改为:
var ipcRenderer = window['require']('electron').ipcRenderer;

但是,这不起作用,它指出 window.require不是函数。我已经尝试过多次使其与其他方法一起使用,但是到目前为止没有任何效果。

问题是require是未定义的,但是require是在包含<webview>的html文件中设置的,因此应该对其进行定义。
<webview>转到URL,该URL返回使用angular的<div>

<div>中使用的角度 Controller 不再起作用,因为我需要的模块是文件中要设置的第一件事,并且它是未定义的

编辑:

现在,我可以看到我在html中设置的属性在应用程序调试器中可见,但是它没有出现在webview调试器中。

因此,我只能假设父 View 不会将值传递给<webview>。因此,如果有人知道为什么它不传递值或我需要做些什么来设置它,那么我将不胜感激。

最佳答案

因此,从当前版本的Electron(0.37.6)开始,设置全局变量的方法是在preload标记的<webview>属性上指定预加载脚本。例如,在预加载脚本中:

window['ipcRenderer'] = require('electron').ipcRenderer;

这将允许<webview>显示的 guest 页面使用ipcRenderer。似乎我以前使用的方法(在父 View HTML中设置全局变量)不再起作用

10-06 12:11