«TypeError: невозможно прочитать свойство« on »из undefined» при выполнении вызова ipc в электронном виде - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь сделать ipc-вызов (от рендерера до основного) в электронном / node.js на моем Mac, однако он не распознает входящий вызов. Если я закомментирую функцию ipc.on (), все будет работать, но эта функция будет такой же, как в примере , за которым я следую.

Я прочитал, что это может быть из-заиз-за неправильной установки, поэтому я убедился, что удалил узел и npm из brew и переустановил его, используя их установщик.

Некоторые из этих файлов длиннее, поэтому я просто комментирую, что уместно.

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

> electron-quick-start@1.0.0 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)

. Я новичок в электронике и буду признателен за любую помощь, которую вы можете предложить, спасибо!

1 Ответ

1 голос
/ 07 ноября 2019

Суббурадж был прав, мне нужно использовать строку

const ipc = require('electron').ipcMain

или

const ipc = electron.ipcMain

Руководство, которому я следовал, должно быть неверно.

...