Files
scoreko-electron-dev/README.md
T
2026-02-10 14:13:37 +01:00

3.3 KiB

scoreko-electron-dev

Wrapper de Electron para empaquetar una instalación de NodeCG que incluya el bundle scoreko-dev, inspirado en opeik/runback-electron pero actualizado a Electron + TypeScript moderno.

Por defecto, el wrapper arranca NodeCG con Node del sistema (node), pensado para que uses Node 22 de forma consistente en todo el stack.

Qué hace

  • Arranca lib/nodecg/index.js como proceso hijo desde Electron.
  • Muestra una ventana de carga mientras NodeCG inicia.
  • Carga el dashboard del bundle en http://localhost:<puerto>/bundles/<bundle>/<ruta-dashboard>.
  • Empaqueta NodeCG + assets dentro de la app final con electron-builder.

Estructura esperada

scoreko-electron-dev/
├─ lib/
│  └─ nodecg/
│     ├─ index.js
│     ├─ node_modules/
│     └─ bundles/
│        └─ scoreko-dev/  # clonado/copiado desde tu repo scoreko-dev
├─ src/main/main.ts
├─ static/loading.html
└─ package.json

Preparación con tu repo scoreko-dev

  1. Copia o clona tu instalación de NodeCG en lib/nodecg.
  2. Copia tu bundle scoreko-dev a lib/nodecg/bundles/scoreko-dev.
  3. Instala dependencias de NodeCG dentro de lib/nodecg.
  4. Instala dependencias del wrapper:
npm install
cd lib/nodecg
npm install
cd ../..

Si no haces npm install dentro de lib/nodecg, verás errores como Cannot find module ... node_modules/nodecg/dist/server/bootstrap.js.

Error típico: NODE_MODULE_VERSION (Node 22 vs Electron Node 20)

Si ves un error como better-sqlite3 ... NODE_MODULE_VERSION, tienes módulos nativos compilados para una versión distinta de Node.

  1. Entra a lib/nodecg.
  2. Reinstala/recompila dependencias nativas:
cd lib/nodecg
npm install
npm rebuild better-sqlite3 --update-binary
  1. Si persiste, elimina node_modules del workspace que falla y vuelve a instalar.

Runtime de NodeCG (Node 22 recomendado)

Por defecto:

  • NODECG_USE_SYSTEM_NODE=true
  • NODECG_NODE_BINARY=node

Así NodeCG se ejecuta con tu Node del sistema (recomendado: Node 22).

Ejemplo en PowerShell para forzar Node 22:

$env:NODECG_USE_SYSTEM_NODE="true"
$env:NODECG_NODE_BINARY="C:\Program Files\nodejs\node.exe"
node -v  # debería mostrar v22.x
npm run dev

Si quieres volver al Node interno de Electron:

$env:NODECG_USE_SYSTEM_NODE="false"
npm run dev

Variables de entorno opcionales

Estas variables se leen en src/main/main.ts.

  • NODECG_PORT (default: 9090)
  • NODECG_BUNDLE_NAME (default: scoreko-dev)
  • SCOREKO_DASHBOARD_ROUTE (default: dashboard/index.html)
  • ELECTRON_LOAD_DELAY_MS (default: 2500)
  • NODECG_STARTUP_TIMEOUT_MS (default: 30000)
  • NODECG_USE_SYSTEM_NODE (default: true)
  • NODECG_NODE_BINARY (default: node)

Ejemplo (PowerShell):

$env:NODECG_PORT="9191"
$env:NODECG_BUNDLE_NAME="scoreko-dev"
npm run dev

Scripts

  • npm run dev: modo desarrollo (watch + relanzado de Electron).
  • npm run start: build y ejecución local.
  • npm run build: compila TypeScript y copia assets.
  • npm run pack: genera app sin instalador.
  • npm run dist: genera instalador/plataformas configuradas.

Nota de seguridad

La ventana principal usa contextIsolation: true, sandbox: true y nodeIntegration: false. Los enlaces externos se abren en el navegador del sistema.