# 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: ```bash cd electron npm install ``` ## Uso rápido > Nota: los scripts usan `cross-env` para que funcionen igual en Windows, macOS y Linux. ```bash 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á: ```bash 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: ```bash 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: ```bash npm run start:dev ``` Modo alternativo (experimental) si querés forzar Node embebido de Electron: ```bash 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: ```bash npm run rebuild:better-sqlite3:electron ``` También podés hacerlo y arrancar en un paso: ```bash npm run start:electron-node:rebuild ``` ## Troubleshooting: `NODE_MODULE_VERSION` (better-sqlite3) Si ves un error como: ```txt 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: ```bash # 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: ```bash cd bundles/scoreko-dev/electron NODE_BINARY="C:/Program Files/nodejs/node.exe" npm start ```