# Solución: Error de Permisos EACCES en Windows ## 🔴 Error ``` [Error: EACCES: permission denied, open 'data/.db.json.tmp'] ``` ## ✅ Soluciones ### Opción 1: Ejecutar como Administrador (Recomendado) 1. **Cerrar la terminal actual** 2. **Abrir PowerShell o CMD como Administrador:** - Click derecho en PowerShell/CMD - Seleccionar "Ejecutar como administrador" 3. **Navegar al proyecto:** ```powershell cd C:\wamp64\www\PARKING ``` 4. **Ejecutar:** ```powershell node src/index-optimized.js ``` ### Opción 2: Verificar y Otorgar Permisos al Directorio 1. **Ir a la carpeta del proyecto:** ``` C:\wamp64\www\PARKING ``` 2. **Click derecho en la carpeta `data/`** → **Propiedades** → **Seguridad** 3. **Verificar permisos:** - Asegúrate de que tu usuario tenga permisos de "Control total" - Si no, click en **Editar** → Seleccionar tu usuario → Marcar **Control total** → **Aplicar** 4. **Si la carpeta `data/` no existe**, créala manualmente: ```powershell mkdir data ``` ### Opción 3: Cambiar Ubicación del Archivo de Base de Datos Si el problema persiste, puedes cambiar la ubicación del archivo de base de datos a una carpeta con permisos garantizados (como `%TEMP%` o `%USERPROFILE%`). **Modificar `src/db.js`:** ```javascript import { Low } from 'lowdb' import { JSONFile } from 'lowdb/node' import { mkdirSync, existsSync } from 'fs' import { join } from 'path' import os from 'os' // Usar carpeta temporal del usuario (siempre tiene permisos) const dbPath = process.env.DB_PATH || join(os.homedir(), '.parking-db', 'db.json') const dbDir = path.dirname(dbPath) if (!existsSync(dbDir)) mkdirSync(dbDir, { recursive: true }) const adapter = new JSONFile(dbPath) ``` ### Opción 4: Usar el Servidor Normal (No Optimizado) Si solo necesitas probar la aplicación sin nginx, usa el servidor normal: ```powershell node src/index.js ``` Este servidor sirve tanto archivos estáticos como APIs. ### Opción 5: Verificar Procesos Bloqueando el Archivo 1. **Cerrar todas las instancias de Node.js:** ```powershell taskkill /F /IM node.exe ``` 2. **Verificar si hay procesos usando el archivo:** - Abrir **Administrador de tareas** (Ctrl+Shift+Esc) - Buscar procesos `node.exe` - Finalizar todos 3. **Eliminar archivos temporales bloqueados:** ```powershell del data\.db.json.tmp ``` ## 🔍 Verificación Después de aplicar una solución, verifica: ```powershell # Verificar que el directorio existe dir data # Verificar permisos (PowerShell como Admin) icacls data # Intentar crear un archivo de prueba echo test > data\test.txt del data\test.txt ``` ## 📝 Nota sobre WAMP Si estás usando WAMP, asegúrate de que: - WAMP esté ejecutándose como administrador - El servicio de Apache/MySQL no esté bloqueando el directorio - Los permisos de `C:\wamp64\www\` permitan escritura ## 🚀 Solución Rápida **La forma más rápida es ejecutar PowerShell como Administrador:** 1. Windows + X 2. Seleccionar "Windows PowerShell (Administrador)" 3. Ejecutar: ```powershell cd C:\wamp64\www\PARKING node src/index-optimized.js ```