Comment utiliser les cookies dans une application React Electron?

Sep 20 2020

J'essaye d'utiliser des cookies dans mon application Electron React.
Pour le moment, je suis complètement incapable de le faire fonctionner.
Exiger l'électron ou l'importer dans un composant de réaction jette "TypeError: fs.existsSync is not a function".
Exemple de code qui casse ( App.jspar exemple):

import { WebContent } from 'electron';

ou alors

const { session } = require('electron');

Ce que je suis arrivé au travail était le code suivant dans le Main.jsfichier:

const { app, BrowserWindow, session } = require('electron');

session.defaultSession.cookies.get({}).then(cookies => {
    console.log(cookies)
});

J'ai suivi ce tutoriel Utiliser Electron avec React: les bases pour configurer mon application de réaction d'électrons.

J'ai également suivi cette réponse à une question similaire, mais quand je fais ceci:

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

Il dit que la session n'est pas définie.

Réponses

PeterLehnhardt Sep 22 2020 at 01:58

Je suppose que vous souhaitez utiliser des cookies dans le processus de rendu (les fichiers js utilisés pour le rendu de l'interface utilisateur). Étant donné que les cookies ne sont normalement accessibles dans le processus principal et l' accès « à distance » est désactivée par défaut depuis la version 10 d'électrons, ce doit être à nouveau allumé par la mise enableRemoteModule: trueen main.js(processus principal) dans la création de la fenêtre du navigateur. Pour moi, ça ressemble à ça

const mainWindow = new BrowserWindow({
  width: 800,
  height: 600,
  webPreferences: {
    nodeIntegration: true,
    enableRemoteModule: true,
  }
});

(Aussi, nodeIntegration: trueest nécessaire dans mon cas mais peut-être pas dans votre cas pour éviter que les erreurs ne processsoient indéfinies.)

En définissant cela, vous pouvez accéder à l'objet de session simplement en faisant

import electron from 'electron';
const {remote} = electron;
const {session} = remote;

console.log(session.defaultSession.cookies);

dans votre code de rendu. En outre, vous pouvez accéder à tous les autres objets généralement accessibles uniquement dans le processus principal via electron.remote. Acclamations.