Electron-React ipcRenderer错误“window.require不是一个函数”

qojgxg4l  于 2023-09-28  发布在  Electron
关注(0)|答案(1)|浏览(262)

我看了很多关于使用ipcRenderer集成react和electron的教程,但是找不到任何解释为什么我在App.js中得到一个错误“window.require is not a function”。

import React from 'react';
import logo from './logo.svg';
import './App.css';
const { ipcRenderer } = window.require('electron');
function App() {

return (
<div className="App">Rendered</div>
);

}

请帮帮我

yhqotfr8

yhqotfr81#

首先,3年前的教程不是一个可靠的来源,我建议你看看Electron docs
在本教程中,webPreferences.nodeIntegration被设置为true,出于安全原因,不建议这样做。你不应该在渲染器进程(你的React代码)中直接调用electron
如果你想使用IPC在你的主进程和渲染进程之间进行通信,你可以使用preload脚本来公开你需要的东西(但不要直接使用IPC函数)。如果我采用教程中的示例,下面是安全的方法:

预加载

const { contextBridge, ipcRenderer } = require('electron');

contextBridge.exposeInMainWorld('electronAPI', {
  getData: (params) => ipcRenderer.send(channels.GET_DATA, params)
});

渲染器

const { electronAPI } = window;

const getData = () => {
  electronAPI.getData({ product });
};

如果您期望从主进程得到响应,那么您最有可能希望使用invoke/handle,而不是send/onuseEffect。这里有一个例子。

相关问题