我正在使用电子进行反应,反应应用是使用create-react-app样板创建的。我需要使用电子API打开外部链接,但是此任务是通过react组件实现的。我将远程电子导入了反应组件内部(以便访问当前窗口。)但这给了我一个错误
const {remote} = require("electron")
错误是由电子本身node_modules/electron/index.js
引起的,而问题出在 fs 模块,它说:
TypeError: fs.existsSync is not a function
此错误显示在电子窗口中。
答案 0 :(得分:0)
使用react-create-app
遇到相同的问题。
此修复程序,在React端使用window.require
而不是import
const electron = window.require("electron")
在电子方面,创建BrowserWindow
时,请按照以下步骤添加nodeIntegration: true
mainWindow = new BrowserWindow({
width: 900,
height: 680,
webPreferences: { nodeIntegration: true }
});
答案 1 :(得分:0)
对于打字稿:
import { IpcRenderer } from 'electron';
declare global {
interface Window {
require: (module: 'electron') => {
ipcRenderer: IpcRenderer
};
}
}
const { ipcRenderer } = window.require('electron');
答案 2 :(得分:0)
正确答案如下:
从 Electron v12 开始,设置 nodeIntegration: true
没有任何影响。相反,您需要设置 contextIsolation: false
:
mainWindow = new BrowserWindow({
// ...
webPreferences: {
contextIsolation: false,
}
})
https://github.com/electron/electron/issues/7300#issuecomment-799093768