Si trabajás con Next.js en Windows y tenés el repo dentro de OneDrive, tarde o temprano podés cruzarte con este clásico: EINVAL: invalid argument, readlink al intentar levantar npm run dev.
A mí me pasó y lo resolví con un enfoque muy simple: identificar la causa real (locks + enlaces/symlinks raros en .next), limpiar de forma segura y después prevenir para no volver a quemar tiempo.
## Qué está pasando en realidad
Cuando OneDrive está sincronizando una carpeta de proyecto, puede:
-
- bloquear archivos (locks) mientras Next compila
-
- “tocar” metadata de archivos/carpetas
-
- y, en algunos casos, dejar artefactos inconsistentes dentro de
.next(que es un directorio volátil y de alta rotación).
- y, en algunos casos, dejar artefactos inconsistentes dentro de
Resultado: Next intenta hacer readlink (leer un enlace simbólico/junction) y Windows devuelve EINVAL.
## Mi revisión del plan (lo que está bien y lo que yo agregaría)
Tu plan base es correcto y minimalista:
- Matar procesos de Node para liberar locks.
- Borrar
.next(artefactos corruptos). - Borrar
tsconfig.tsbuildinfopara forzar recompilación limpia. - Verificar que el dev server llegue a “Ready” y compile rutas.
Lo que yo agrego para hacerlo “a prueba de futuro”:
-
- Evitar que OneDrive sincronice
.next(ideal) o directamente mover el repo fuera de OneDrive.
- Evitar que OneDrive sincronice
-
- Si necesitás OneDrive por política de empresa: al menos excluir la carpeta del proyecto o usar una ubicación local no sincronizada y sincronizar solo docs/exports.
-
- Si el equipo es grande: dejar un runbook (pasos + comandos + criterio de éxito) para que cualquiera lo ejecute.
## Pasos exactos que uso para arreglarlo
Objetivo: volver a un estado determinista antes de correr
dev.
### 1) Terminar procesos que bloquean archivos
En Windows, lo práctico es cerrar terminales y matar procesos node.exe activos.
### 2) Limpieza segura de artefactos
Borro:
-
.next/
-
tsconfig.tsbuildinfo(si existe)
### 3) Levantar dev y confirmar “Ready”
Mi criterio de éxito no es “arrancó”, es ver el log con:
-
✓ Starting...
-
✓ Ready in Xs
-
- y que empiece a compilar rutas sin volver a caer en EINVAL.
## Evidencia de verificación (qué espero ver)
Un ejemplo típico de “estado sano” se ve así:
```text
▲ Next.js 15.1.0
-
- Local: http://localhost:3000
✓ Starting...
✓ Ready in 7.4s
○ Compiling /src/middleware ... ✓ Compiled /src/middleware ... ○ Compiling /[locale]/contenidos ...
```
Con eso, para mí, el error quedó resuelto.
## Cómo evito que vuelva a pasar
Si querés mi recomendación directa y sin vueltas:
-
- No tengas el repo dentro de OneDrive (mejor opción).
-
- Si no podés evitarlo:
-
- Excluir .next de sincronización (si tu OneDrive/IT lo permite)
-
- o trabajar en una carpeta local no sincronizada y subir cambios por Git como corresponde.
.next no es “código fuente”, es basura útil: si OneDrive la interfiere, te rompe el ciclo de desarrollo.
## Si querés, lo dejo blindado con vos
Cuando este tipo de error aparece una vez, suele ser la punta del iceberg: paths largos, watchers, permisos, cache corrupta, CI distinto al local, etc.
Si querés que te lo deje estable (local + CI) y con checklist reproducible, pedime un diagnóstico conmigo.









