Tengo una aplicación Electron. Necesito obtener el valor de una variable de entorno de mi máquina local para usarla en el subproceso del renderizador. Quiero pasar este valor al subproceso del renderizador cuando se inicia la aplicación. Lo sé en el archivo main.js , puedo obtener la variable de entorno de esta manera:
principal.js
const createWindow = () => { const win = new BrowserWindow({ width: 800, height: 600 }); win.loadFile('index.html'); // Retrieve the environment variable value const variableValue = process.env.MY_ENVIRONMENT_VARIABLE; console.log(`Variable value: ${variableValue}`); // Send the variable and it's value to the renderer. win.webContents.send('initialize', { 'variableName':variableValue }); }Lo anterior imprime con éxito el valor de la variable de entorno en la ventana del terminal. Sin embargo, necesito usar este valor en el lado del navegador de la pelota. ¿Cómo obtengo el valor de la variable allí?
¡Gracias!
Esto no se puede hacer directamente desde el proceso del renderizador (con nodeIntegration desactivado), ya que no tiene acceso directo a la variable de process de Node.js.
La forma más sencilla de hacer esto es a través del script de precarga de BrowserWindow, que le permite exponer datos arbitrarios al proceso de representación a través de la API contextBridge de Electron. Un ejemplo:
// Main Process const win = new BrowserWindow({ width: 800, height: 600, preload: path.join(__dirname, 'preload.js'); // require `path` if you haven't already }); // Preload Script const { contextBridge } = require('electron'); // this should print out the value of MY_ENVIRONMENT_VARIABLE console.log(process.env.MY_ENVIRONMENT_VARIABLE); contextBridge.exposeInMainWorld('envVars', { myEnvironmentVariable: process.env.MY_ENVIRONMENT_VARIABLE }); // Renderer Process console.log(window.envVars.MY_ENVIRONMENT_VARIABLE)Consulte los documentos de API de contextBridge: https://www.electronjs.org/docs/latest/api/context-bridge