Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

406
Visualizações
No se pueden usar las API de Node.js en el proceso de representación

No se pueden utilizar operaciones relacionadas con electrones o nodos en electron . Obtener el proceso de error no definido. Revisé en varios lugares que guían para agregar soporte de nodo, pero eso ya está hecho, así que me quedé atascado aquí. El código de mi aplicación principal es

 const electron = require("electron"); const { app, BrowserWindow } = electron; function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true }, }); win.loadFile("index.html"); } app.whenReady().then(createWindow); app.on("window-all-closed", () => { if (process.platform !== "darwin") { app.quit(); } }); app.on("activate", () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } });

y el índice.html

 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello World!</title> </head> <body style="background: white"> <h1>Hello World!</h1> <p> We are using node <script> document.write(process.versions.node); </script> , Chrome <script> document.write(process.versions.chrome); </script> , and Electron <script> document.write(process.versions.electron); </script> . </p> </body> </html>
over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Actualización: la respuesta a continuación es una solución. No debe deshabilitar contextIsolation y no debe habilitar nodeIntegration . En su lugar, debe usar una secuencia de comandos precargada y la API contextBridge .

En Electron 12 , contextIsolation ahora es true por defecto

Si lo establece en false , tendrá acceso a las API de Node.js en el proceso de renderizado.

 function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { contextIsolation: false, nodeIntegration: true }, }); win.loadFile("index.html"); }

⚠️ ¡Es importante tener en cuenta que esto no es recomendable!

Hay una buena razón por la cual los mantenedores de Electron cambiaron el valor predeterminado. Ver esta discusión

Sin contextIsolation, cualquier código que se ejecute en un proceso de representación puede llegar con bastante facilidad a las partes internas de Electron o a su secuencia de comandos precargada y realizar acciones privilegiadas que no desea que realicen sitios web arbitrarios.

over 4 years ago · Santiago Trujillo Relatório

0

No hay razón para elevar los privilegios de su renderizador. Cualquier secuencia de comandos de terceros en esa página se ejecutaría con los mismos privilegios y eso definitivamente no es lo que desea.

En su lugar, debe usar un script de precarga que tenga ese privilegio (es decir, puede usar las API de Node.js de forma predeterminada) pero mantenga contextIsolation=true (que es el valor predeterminado de todos modos). Si necesita compartir datos entre su secuencia de comandos de precarga y su secuencia de comandos de representación, use contextBridge .

En mi ejemplo, he expuesto los datos del script de precarga al script del renderizador bajo un espacio de nombres bastante tonto ( window.BURRITO ) para que sea obvio que usted está a cargo:

principal.js

 const {app, BrowserWindow} = require('electron'); //<- v13.1.7 const path = require('path'); app.whenReady().then(() => { const preload = path.join(__dirname, 'preload.js'); const mainWindow = new BrowserWindow({ webPreferences: { preload }}); mainWindow.loadFile('index.html'); });

precargar.js

 const {contextBridge} = require('electron'); contextBridge.exposeInMainWorld('BURRITO', { getNodeVer: () => process.versions.node, getChromeVer: () => process.versions.chrome, getElectronVer: () => process.versions.electron });

renderizador.js

 const onClick = (sel, fn) => document.querySelector(sel).addEventListener('click', fn); onClick('#btn1', () => alert(BURRITO.getNodeVer())); onClick('#btn2', () => alert(BURRITO.getChromeVer())); onClick('#btn3', () => alert(BURRITO.getElectronVer()));

índice.html

 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> </head> <body> <button id="btn1">Node?</button> <button id="btn2">Chrome?</button> <button id="btn3">Electron?</button> <script src="./renderer.js"></script> </body> </html>

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda