Come si utilizzano i cookie in un'app React Electron?
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
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.