Watch at EaseHistorias. Respuestas. Perspectiva.

Tecnología · GUÍA PRÁCTICA

¿npm muestra EACCES permiso denegado? Lea la ruta fallida antes de usar sudo, chown o cambiar el prefix

Caché, proyecto, prefix global y contenedor parecen iguales, pero tienen propietarios distintos. Conserve la ruta exacta antes de cambiar nada.

Ilustración conceptual original de tres ámbitos de archivos conectados a la ruta npm fallida ampliada.
Ilustración conceptual original de Watch at Ease: clasifique la ruta denegada antes de cambiar propietario o permisos. Watch at Ease / OpenAI-generated

EACCES solo dice que una operación del sistema de archivos fue rechazada; no demuestra que npm, la caché, el proyecto o el prefix global estén dañados en conjunto.

La pista decisiva es `npm ERR! path`, junto con el syscall y la cuenta que ejecutó el comando. Preserve esos datos antes de cambiar propietario, permisos, caché, prefix o usuario.

Esta guía separa cuatro ámbitos—caché, proyecto local, prefix global y montaje de contenedor o CI—y crea una ficha de evidencia de solo lectura.

Un código de error cubre cuatro ámbitos de permisos

Una ruta bajo `~/.npm` apunta a la caché del usuario; `node_modules` dentro del proyecto, al árbol local; una ruta bajo `npm config get prefix`, a la instalación global. `/workspace`, `/app`, un volumen o un HOME inesperado pueden revelar una discrepancia de contenedor, CI o espacio remoto.

Cada rama tiene otro propietario y otra solución. Cambiar el prefix no vuelve escribible `/var/test/node_modules`; cambiar la caché no arregla un montaje de solo lectura; sudo puede crear archivos nuevos propiedad de root.

Capture una ficha de evidencia de solo lectura

Guarde el bloque EACCES completo: code, syscall, path, cwd, versiones de Node/npm y comando original. Registre `npm config get cache`, `npm config get prefix`, `npm prefix`, `npm root -g`, la cuenta y el directorio actual.

En macOS/Linux use `ls -ld` o `namei -l`; en contenedores anote UID/GID, HOME y montajes; en Windows use `Get-Acl`. No pegue tokens ni el contenido de `.npmrc` en un ticket.

Si la ruta es la caché, verifique propietario y entorno

Si la ruta está bajo la caché, el proyecto puede ser escribible. Compare propietarios, UID y ejecuciones anteriores con sudo o contenedores. `npm cache verify` comprueba integridad; borrar la caché no diagnostica permisos.

No ejecute a ciegas el chown que imprime npm. El caso de Termux muestra que el diagnóstico de archivos de root puede no corresponder al entorno. Solo tras confirmar el propietario incorrecto debe el dueño del HOME revisar una reparación limitada.

Si la ruta está en el proyecto, repare el límite del proyecto

Un fallo en `/var/test/node_modules`, un repositorio o un workspace montado significa que la cuenta no puede escribir en la instalación local. Cambiar el prefix no modifica ese directorio. Revise propietario, grupo, ACL, modo de montaje y creador.

Evite `chmod -R 777`, `chmod a+w` y chown recursivo sin revisión. Restaure el árbol a la cuenta/grupo previstos o ejecute la compilación como el propietario real.

Si la ruta está en el prefix global, use las rutas admitidas por npm

npm recomienda un gestor de versiones de Node o un prefix del usuario; para comandos ocasionales también propone `npx`.

Confirme primero que la ruta esté bajo el prefix global. En equipos administrados, solicite el entorno aprobado en vez de eludir la política.

Contenedores y CI deben alinear UID, HOME y montajes

En un contenedor importan los UID/GID numéricos. Registre propietario del montaje, HOME compartido o de solo lectura y pasos anteriores ejecutados como root.

La solución durable suele alinear UID, separar cachés o corregir el montaje. No haga chown recursivo de un volumen host desde un contenedor efímero sin aprobación.

Elija la acción mínima revisada y conserve el relevo

El relevo debe incluir ruta, syscall, cuenta, caché, prefix, propietario del proyecto y tipo de entorno, además de la clasificación de cuatro ramas.

Deténgase ante rutas inesperadas, propiedad compartida incoherente, montaje de solo lectura, runtime administrado, cuenta desconocida o ampliación de permisos. Resolver EACCES significa que la cuenta prevista realiza la operación prevista.

Matriz conceptual original que lleva fallos de caché, proyecto, global y contenedor a una inspección de solo lectura.
Ilustración conceptual original de Watch at Ease: cada ámbito tiene evidencia y propietario propios; no existe un sudo universal. Watch at Ease / OpenAI-generated