reactjs - 如何在反应电子应用程序中使用 cookie?
问题描述
我正在尝试在我的电子反应应用程序中使用 cookie。
目前我完全无法让它工作。
需要电子或将其导入反应组件会引发“TypeError:fs.existsSync 不是函数”。
中断的示例代码(App.js
例如):
import { WebContent } from 'electron';
或者
const { session } = require('electron');
我要做的是Main.js
文件中的以下代码:
const { app, BrowserWindow, session } = require('electron');
session.defaultSession.cookies.get({}).then(cookies => {
console.log(cookies)
});
我按照本教程Using Electron with React: The Basics来设置我的电子反应应用程序。
我也按照这个答案回答了一个类似的问题,但是当我这样做时:
const { session } = window.require('electron');
console.log(session.defaultSession.cookies);
它说会话未定义。
解决方案
我猜,您想在渲染器进程(用于渲染 UI 的 js 文件)中使用 cookie。由于 cookie 通常只能在主进程中访问,并且从电子版本 10 开始默认关闭“远程”访问,因此必须通过在创建浏览器窗口enableRemoteModule: true
中的main.js
(主进程)中进行设置来再次打开它。对我来说,这看起来像
const mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true,
}
});
(另外,nodeIntegration: true
在我的情况下是必要的,但在你的情况下可能不是为了防止process
未定义的错误。)
设置它,您可以通过执行访问会话对象
import electron from 'electron';
const {remote} = electron;
const {session} = remote;
console.log(session.defaultSession.cookies);
在您的渲染器代码中。此外,您可以访问所有其他对象,这些对象通常只能在主进程中通过electron.remote
. 干杯。