Files
scoreko-electron-dev/README.md
T

3.5 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.

Este wrapper está pensado para funcionar standalone: por defecto NodeCG corre con el Node interno de Electron (no requiere Node instalado en la máquina final).

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.

¿Existe Electron con NODE_MODULE_VERSION 127?

No en releases estables de Electron. Revisando la tabla oficial de releases de Electron, no aparece modules=127.

  • Electron 32.x usa NODE_MODULE_VERSION 128
  • Electron 34.x usa NODE_MODULE_VERSION 132
  • Electron 35.x usa NODE_MODULE_VERSION 133

Por eso, para standalone hay que recompilar addons nativos contra la versión de Electron elegida.

Error típico: NODE_MODULE_VERSION

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

En ese caso recompila contra Electron:

npm run rebuild:native

Este script ejecuta electron-rebuild en lib/nodecg y en el workspace SQLite legacy (si existe).

Si sigues en modo standalone (default), asegúrate de no mezclar binarios compilados con otro runtime distinto al de Electron.

Runtime de NodeCG

Por defecto (standalone):

  • NODECG_USE_SYSTEM_NODE=false

Opcionalmente, puedes forzar Node del sistema:

  • NODECG_USE_SYSTEM_NODE=true
  • NODECG_NODE_BINARY=node

Ejemplo en PowerShell para usar Node del sistema (si lo necesitas):

$env:NODECG_USE_SYSTEM_NODE="true"
$env:NODECG_NODE_BINARY="C:\Program Files\nodejs\node.exe"
node -v
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: false)
  • NODECG_NODE_BINARY (default: node)

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.