Electron 需要 ipcRenderer 不起作用

all*_*ded 5 electron

我正在尝试做一个简单的 ipc.send 和 ipc.on,但由于某种原因,我对这个电子需求没有定义。

库/自定义菜单.js:

'use-strict';

const BrowserWindow = require('electron').BrowserWindow;
const ipcRenderer = require('electron').ipcRenderer;

exports.getTemplate = function () {
  const template = [
    {
      label: 'Roll20',
      submenu: [
        {
          label: 'Player Handbook',
          click() {
            console.log('test');
          },
        },
      ],
    },
    {
      label: 'View',
      submenu: [
        {
          label: 'Toggle Fullscreen',
          accelerator: 'F11',
          click(item, focusedWindow) {
            if (focusedWindow) {
              focusedWindow.setFullScreen(!focusedWindow.isFullScreen());
            }
          },
        },
        {
          label: 'Toggle Developer Tools',
          accelerator: (function () {
            if (process.platform === 'darwin') {
              return 'Alt+Command+I';
            }
            return 'Ctrl+Shift+I';
          }()),
          click(item, focusedWindow) {
            if (focusedWindow) {
              focusedWindow.toggleDevTools();
            }
          },
        },
        {
          label: 'Reload',
          accelerator: 'F5',
          click() {
            BrowserWindow.getFocusedWindow().reloadIgnoringCache();
          },
        },
      ],
    },
    {
      label: 'Random Generators',
      submenu: [
        {
          label: 'World Generator',
          click() {
            ipcRenderer.send('show-world');
          },
        },
      ],
    },
  ];
  return template;
};
Run Code Online (Sandbox Code Playgroud)

错误是无法读取未定义的属性“发送”。

Vad*_*gon 7

BrowserWindow模块仅在主进程中可用,该ipcRenderer模块仅在渲染器进程中可用,因此无论您在哪个进程中运行此代码都不会工作。我猜测由于ipcRenderer不可用,您正在尝试在主进程中运行此代码。