From fa0a5563c5204489f6b375f0adf6f85ae6ad798b Mon Sep 17 00:00:00 2001 From: "Mauro Rosero P." Date: Sun, 23 Mar 2025 12:45:09 -0500 Subject: [PATCH] =?UTF-8?q?[FIXED]=20Correcci=C3=B3n=20para=20package.json?= =?UTF-8?q?=20vac=C3=ADo=20en=20script=20nodered.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Añadida verificación de package.json vacío o inválido - Implementada eliminación automática de archivos package.json problemáticos - Mejorada función install_deps para manejo robusto de dependencias - Añadido respaldo automático de archivos dañados - Añadida inicialización de package.json cuando no existe - Mejorada verificación de instalación exitosa de Node-RED 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- bin/nodered.sh | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/bin/nodered.sh b/bin/nodered.sh index 191033e..c27cf17 100755 --- a/bin/nodered.sh +++ b/bin/nodered.sh @@ -95,6 +95,21 @@ start() { exit 1 fi + # Verificar package.json y corregirlo si está vacío o dañado + if [ -f "package.json" ]; then + # Verificar si package.json está vacío o solo contiene espacios/saltos de línea + if [ ! -s "package.json" ] || [ "$(cat package.json | tr -d '[:space:]')" = "" ]; then + echo "ADVERTENCIA: Archivo package.json está vacío. Eliminándolo..." + rm -f "package.json" + else + # Verificar si el archivo es un JSON válido + if ! node -e "try { require('./package.json'); process.exit(0); } catch(e) { console.error('JSON inválido:', e.message); process.exit(1); }" 2>/dev/null; then + echo "ADVERTENCIA: Archivo package.json contiene JSON inválido. Haciendo copia de seguridad y eliminándolo..." + mv "package.json" "package.json.bak.$(date +%Y%m%d%H%M%S)" + fi + fi + fi + # Verificar si node-red está disponible localmente if ! npm list -g node-red &> /dev/null && ! npm list node-red &> /dev/null; then echo "Node-RED no está instalado. Instalando localmente..." @@ -335,13 +350,43 @@ install_deps() { exit 1 fi + # Verificar y corregir package.json si es necesario + if [ -f "package.json" ]; then + # Verificar si package.json está vacío o solo contiene espacios/saltos de línea + if [ ! -s "package.json" ] || [ "$(cat package.json | tr -d '[:space:]')" = "" ]; then + echo "ADVERTENCIA: Archivo package.json está vacío. Eliminándolo para una instalación limpia..." + rm -f "package.json" + else + # Verificar si el archivo es un JSON válido + if ! node -e "try { require('./package.json'); process.exit(0); } catch(e) { process.exit(1); }" 2>/dev/null; then + echo "ADVERTENCIA: Archivo package.json contiene JSON inválido. Haciendo copia de seguridad..." + mv "package.json" "package.json.bak.$(date +%Y%m%d%H%M%S)" + fi + fi + fi + + # Inicializar package.json si no existe + if [ ! -f "package.json" ]; then + echo "Inicializando package.json..." + npm init -y + fi + # Instalar o actualizar Node-RED + echo "Instalando Node-RED..." npm install --save node-red # Instalar paquetes comunes útiles para IoT + echo "Instalando módulos adicionales para Node-RED..." npm install --save node-red-dashboard node-red-node-serialport node-red-contrib-mqtt-broker - echo "Dependencias instaladas correctamente." + # Verificar si las instalaciones fueron exitosas + if npm list node-red | grep -q "node-red"; then + echo "Node-RED instalado correctamente." + else + echo "ADVERTENCIA: Hubo problemas instalando Node-RED." + fi + + echo "Todas las dependencias instaladas. Use './nodered.sh start' para iniciar el servidor." } logs() {