更新

时间:2016-04-18 15:16:56

标签: javascript node.js webview electron

我试图在访客页面(角度控制器)中要求一个模块。

当应用程序使用旧版本的节点(0.30.5)时,它运行得非常好。但是我必须将电子升级到最新版本(0.37.6),并且已经更新了电子应用程序中ipc的所有用法,现在它已经ipcMainipcRenderer

以前,角度控制器设法要求使用模块:

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

所以我认为将其改为:

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

然而,这不起作用,它表明 window.require不是一个功能 。我已经多次试过让它与其他方法一起工作,但到目前为止没有任何工作。

问题是require 未定义,但是在包含<webview>的html文件中设置了require,因此应该定义。

<webview>转到一个返回<div>的网址,该网址使用的是角色。

<div>中使用的角度控制器不再有效,因为我需要的模块是在文件中设置的第一件事,并且未定义

编辑:

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

所以我只能假设父视图没有将值传递给<webview>。因此,如果有人知道为什么它没有传递价值或我需要做什么来设置它,我将不胜感激任何信息。

2 个答案:

答案 0 :(得分:1)

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

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

这将允许<webview>正在显示的访客页面使用ipcRenderer。看起来像我之前使用的方法,即在父视图HTML中设置全局变量,不再起作用了

答案 1 :(得分:0)

这是一种需要电子模块的老方法。这是新的:

var ipcRenderer = require('electron').ipcRenderer;