我正在尝试在Mac上的electronic / node.js中进行ipc调用(从渲染器到主设备),但是无法识别调用。如果我注释掉ipc.on()函数,则一切正常,但该函数似乎与我正在关注的example中的相同。
[我听说这可能是由于安装错误,所以我确保从brew中卸载node和npm并使用其安装程序重新安装。
其中一些文件更长,所以我只在评论相关内容。
main.js
// Modules to control application life and create native browser window
const electron = require("electron");
const path = require('path')
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const ipc = app.ipcMain;
let mainWindow
... createWindow() call
ipc.on('connect-to-instance', function(event) {
console.log('buton pressed')
})
... more app.on calls
renderer.js
const ipc = require('electron').ipcRenderer;
const connect = document.getElementById('connect-button')
connect.addEventListener('click', function(){
ipc.send('connect-to-instance');
})
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Test App</title>
</head>
<body>
<div class="container">
<h1 class="header-title">Please Enter an Instance</h1>
<form class="forms-body">
<div class="connect-container">
<input class="connect-bar" id="inputURL" type="text" name="instance_name">
<button class="connect-button" id="connect-button">connect</button>
</div>
</form>
</div>
<!-- You can also require other files to run in this process -->
<script src="./renderer.js"></script>
</body>
</html>
这应该是调用ipc.on函数并记录消息,但是无论何时启动它,我都会收到错误消息
$ npm clean-install
$ npm start
> [email protected] start /Users/MyName/Code/test_app
> electron .
App threw an error during load
TypeError: Cannot read property 'on' of undefined
at Object.<anonymous> (/Users/MyName/Code/test_app/main.js:44:5)
at Module._compile (internal/modules/cjs/loader.js:880:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:892:10)
at Module.load (internal/modules/cjs/loader.js:735:32)
at Module._load (internal/modules/cjs/loader.js:648:12)
at Module._load (electron/js2c/asar.js:717:26)
at Function.Module._load (electron/js2c/asar.js:717:26)
at loadApplicationPackage (/Users/MyName/Code/test_app/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:109:16)
at Object.<anonymous> (/Users/MyName/Code/test_app/node_modules/electron/dist/Electron.app/Contents/Resources/default_app.asar/main.js:155:9)
at Module._compile (internal/modules/cjs/loader.js:880:30)
相反。我是电子新手,非常感谢您能提供的任何帮助,谢谢!
Subburaj是正确的,我必须使用该行
const ipc = require('electron').ipcMain
或
const ipc = electron.ipcMain
我遵循的指南一定不正确。