Come si utilizzano i cookie in un'app React Electron?

Sep 20 2020

Sto cercando di utilizzare i cookie nella mia app Electron React.
Al momento non sono assolutamente in grado di farlo funzionare.
Richiedere l'elettrone o importarlo in un componente di reazione genera "TypeError: fs.existsSync non è una funzione".
Codice di esempio che si rompe ( App.jsad esempio):

import { WebContent } from 'electron';

o

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

Quello che ho avuto modo di lavorare è stato il seguente codice nel Main.jsfile:

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

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

Ho seguito questo tutorial Using Electron with React: The Basics per configurare la mia app Electron React .

Ho anche seguito questa risposta a una domanda simile, ma quando lo faccio:

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

Dice che la sessione non è definita.

Risposte

PeterLehnhardt Sep 22 2020 at 01:58

Immagino che tu voglia utilizzare i cookie all'interno del processo di rendering (i file js utilizzati per il rendering dell'interfaccia utente). Poiché i biscotti sono normalmente accessibili solo all'interno del processo principale e 'remoto' accesso è disattivata di default dalla versione 10 di elettroni, questo deve essere nuovamente acceso modificando enableRemoteModule: truein main.js(processo principale) nella creazione della finestra del browser. Per me questo sembra così

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

(Inoltre, nodeIntegration: trueè necessario nel mio caso ma forse non nel tuo caso per evitare che gli errori processsiano indefiniti.)

Impostandolo, puoi accedere all'oggetto sessione semplicemente facendo

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

console.log(session.defaultSession.cookies);

nel codice del renderer. Inoltre, è possibile accedere a tutti gli altri oggetti normalmente accessibili solo nel processo principale tramite electron.remote. Saluti.