Files
scoreko-dev/electron

Electron wrapper para Scoreko

Este wrapper permite abrir el bundle de NodeCG como una app de escritorio usando Electron.

Requisitos

  • Node.js 22+
  • Electron wrapper fijado en 39.5.1 (usa Node.js 22.22.0).
  • Dependencias del proyecto raíz ya instaladas
  • node index.js funcional en la raíz de NodeCG

Estructura esperada

Este bundle suele vivir en bundles/scoreko-dev. El wrapper asume por defecto que la raíz de NodeCG está en ../../ respecto a esta carpeta.

Si tu estructura es distinta, podés usar la variable NODECG_ROOT.

Instalación

Desde la raíz del repositorio:

cd electron
npm install

Uso rápido

Nota: los scripts usan cross-env para que funcionen igual en Windows, macOS y Linux.

cd electron
npm start

npm start arranca NodeCG con Node del sistema (NODE_BINARY, por defecto node) y después abre la ventana de Electron. Este es el modo recomendado.

Para desarrollo, usá:

npm run start:dev

start:dev también usa Node del sistema y deja variables preparadas para desarrollo.

Variables de entorno

  • NODECG_ROOT: ruta a la raíz de NodeCG (relativa al bundle o absoluta).
  • NODECG_PORT: puerto de NodeCG (por defecto 9090).
  • ELECTRON_START_URL: URL que abre la ventana (por defecto http://localhost:9090/bundles/scoreko-dev/dashboard/scoreko-dev/main.html?standalone=true).
  • NODE_BINARY: ejecutable de Node.js para arrancar NodeCG (por defecto node).
  • NODECG_USE_ELECTRON_NODE: si vale 1, NodeCG arranca con el runtime de Node embebido en Electron (process.execPath).

Ejemplo:

NODECG_ROOT=../.. NODECG_PORT=9090 ELECTRON_START_URL=http://localhost:9090/bundles/scoreko-dev/dashboard/scoreko-dev/main.html?standalone=true npm start

Modo desarrollo recomendado

Script de desarrollo:

npm run start:dev

Modo alternativo (experimental) si querés forzar Node embebido de Electron:

npm run start:electron-node

Si vas a usar el modo Electron-Node y te aparece NODE_MODULE_VERSION, recompilá better-sqlite3 contra Electron 39.5.1:

npm run rebuild:better-sqlite3:electron

También podés hacerlo y arrancar en un paso:

npm run start:electron-node:rebuild

Troubleshooting: NODE_MODULE_VERSION (better-sqlite3)

Si ves un error como:

was compiled against a different Node.js version ...
NODE_MODULE_VERSION 127 ... requires NODE_MODULE_VERSION 136

significa que NodeCG se está ejecutando con un runtime distinto al que compiló los módulos nativos (better-sqlite3).

  • 127 corresponde a Node.js 22 (normalmente tu instalación de Node).
  • El otro número (136, 140, etc.) representa la ABI del runtime de Node embebido en la versión de Electron que estés usando.

Recomendación práctica: usá Node del sistema (start/start:dev) para NodeCG. Si forzás start:electron-node, tenés que recompilar nativos (como better-sqlite3) contra la ABI de Electron.

Pasos recomendados en Windows:

# desde la raíz de NodeCG (no dentro de electron)
cd ~/Desktop/nodecg
rm -rf node_modules package-lock.json
npm install

# opcional: forzar recompilación de nativos para tu Node actual
npm rebuild better-sqlite3

Y si tenés varias instalaciones de Node:

cd bundles/scoreko-dev/electron
NODE_BINARY="C:/Program Files/nodejs/node.exe" npm start