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.jscomo 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
- Copia o clona tu instalación de NodeCG en
lib/nodecg. - Copia tu bundle
scoreko-devalib/nodecg/bundles/scoreko-dev. - Instala dependencias de NodeCG dentro de
lib/nodecg. - Instala dependencias del wrapper:
npm install
cd lib/nodecg
npm install
cd ../..
Si no haces
npm installdentro delib/nodecg, verás errores comoCannot 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=trueNODECG_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.