无法使用IPC交流electronicjs-angularjs

时间:2019-05-22 18:42:03

标签: javascript angularjs electron webkit desktop-application

我从electronjs桌面应用程序开始,所以我决定将angularjs用于视图。

现在,当我尝试使用eletron ipc进行通信时,这两个我会得到无法读取未定义的属性“发送”

这是我到目前为止所做的:

main.js-electronicjs

var ipc = require('ipc');
ipc.send('asynchronous-message', 'ping');

app.controller.js-angularjs

const ipcRenderer = require('electron').ipcRenderer;
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')); // prints "pong"

ipcRenderer.on('asynchronous-reply', function(event, arg) {
    console.log(arg); // prints "pong"
});
ipcRenderer.send('asynchronous-message', 'ping');

我显然做错了什么,有人可以帮我吗?

1 个答案:

答案 0 :(得分:1)

知道了!

main.js 中创建BrowserWindow时,将nodeIntegration设置为true

win = new BrowserWindow({
show: false,
webPreferences: {
    nodeIntegration: true
  }
});

这允许angularjs使用require(),所以在 app.controller.js 中,我刚刚做了

const { ipcRenderer } = require('electron')
  // In renderer process (web page).
  console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"

  ipcRenderer.on('asynchronous-reply', (event, arg) => {
    console.log(arg) // prints "pong"
  })
  ipcRenderer.send('asynchronous-message', 'ping')
}

因此它在控制台中打印: ong 傍