首页 > 解决方案 > 如何在反应电子应用程序中使用 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);

它说会话未定义。

标签: reactjselectron

解决方案


我猜,您想在渲染器进程(用于渲染 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. 干杯。


推荐阅读