【问题标题】:How do I use cookies in a react electron app?如何在反应电子应用程序中使用 cookie?
【发布时间】:2021-01-06 09:21:32
【问题描述】:

我正在尝试在我的电子反应应用程序中使用 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 设置了我的电子反应应用程序。

我也跟着this 回答了一个类似的问题,但是当我这样做时:

const { session } = window.require('electron');
console.log(session.defaultSession.cookies);

它说会话未定义。

【问题讨论】:

  • 这是错字吗? window.requrie('electron'); ?
  • 是的,与问题无关,抱歉。

标签: reactjs electron


【解决方案1】:

我猜,您想在渲染器进程(用于渲染 UI 的 js 文件)中使用 cookie。由于 cookie 通常只能在主进程中访问,并且自电子版本 10 以来默认关闭“远程”访问,因此必须通过在创建中的 main.js (主进程)中设置 enableRemoteModule: true 再次打开它的浏览器窗口。对我来说是这样的

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 访问通常只能在主进程中访问的所有其他对象。 干杯。

【讨论】:

    猜你喜欢
    • 2015-11-24
    • 2020-08-10
    • 2021-08-25
    • 2021-01-19
    • 2020-01-25
    • 1970-01-01
    • 2021-11-11
    • 2018-03-30
    • 2017-05-25
    相关资源
    最近更新 更多