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

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

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

main.js-电子

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');


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

最佳答案

得到它了!!!

在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
ong

07-24 17:44
查看更多