[FIXED] Corrección para package.json vacío en script nodered.sh

- 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 <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-03-23 12:45:09 -05:00
parent 89daa56b46
commit fa0a5563c5
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -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() {