Error: EACCES: permiso denegado


99

Corro NPM instalar lodash pero arroja error: EACCES: permiso denegado error. Sé que es un problema de permiso, pero hasta donde yo sé, no se requiere permiso sudo para instalar el módulo de nodo localmente. Si lo ejecuto con sudo, se instala dentro de la carpeta ~ / node_modules. drwxrwxr-x es el permiso de archivo de la carpeta existente. No puedo imaginar qué pudo haber salido mal.

A continuación se muestra el mensaje de error.

npm ERR! tar.unpack untar error /home/rupesh/.npm/lodash/4.13.1/package.tgz
npm ERR! Linux 3.13.0-88-generic
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "lodash"
npm ERR! node v4.3.1
npm ERR! npm  v2.14.12
npm ERR! path /home/rupesh/node_modules/lodash
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall mkdir

npm ERR! Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, mkdir '/home/rupesh/node_modules/lodash']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/local/lib/node_modules/npm/node_modules/fstream/lib/dir-writer.js:35:25',
npm ERR!      '/usr/local/lib/node_modules/npm/node_modules/mkdirp/index.js:47:53',
npm ERR!      'FSReqWrap.oncomplete (fs.js:82:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /home/rupesh/Desktop/es6/npm-debug.log

es el propietario de la carpeta node_modulesraíz?
AJS

La carpeta node_module aún no se ha creado dentro de la carpeta en la que tengo la intención de instalar lodash.
xruptronics

¿Ejecutó npm install en su directorio / home / rupesh / o en algún otro directorio?
AJS

La ruta de la carpeta en la que ejecuto npm install es ~ / Desktop / es6
xruptronics

cuál es el resultado de ls -l ~/Desktop | grep es6asegurarse de que es el propietario del directorio es6
AJS

Respuestas:


79

Este comando soluciona el problema. Funcionó para mí:

sudo npm install -g --unsafe-perm=true --allow-root

Para cualquier persona como yo, aunque este comando parece haber funcionado en el momento de escribir este artículo, para Node v10.10.0recibí el siguiente error: "npm ERR! No se puede instalar / var / www / project: falta el nombre del paquete"
Wayne Smallman

1
Las banderas --unsafe-perm = true --allow-root nos funcionaron usando el nodo v10.15.0 para instalar como usuario root una aplicación existente donde node-sass no se instalaría. El comando exacto que usamos para instalar node-sass en la carpeta node_modules del directorio local fue # npm install --save-dev --unsafe-perm = true --allow-root node-sass @ latest
Peter Edwards

Puede utilizar root para resolver el problema (aunque no se recomienda).
Chris Marotta

Pude hacer que funcionara usando esos indicadores, así que realmente la respuesta es: sudo npm install -g --unsafe-perm = true --allow-root <package-name> @ <version-name>
Frank Hu MSFT

46

Tengo el mismo problema con la instalación del servidor webpack en todo el mundo. Siga los pasos de esta URL. Resolví mi problema, será un trabajo para usted.

Pasos mencionados anteriormente Allí: Haga una copia de seguridad de su computadora antes de comenzar.

Cree un directorio para instalaciones globales:

1. mkdir ~/.npm-global

Configure npm para usar la nueva ruta del directorio:

2.npm config set prefix '~/.npm-global'

Abra o cree un archivo ~ / .profile y agregue esta línea:

3.export PATH=~/.npm-global/bin:$PATH

De vuelta en la línea de comando, actualice las variables de su sistema:

4.source ~/.profile

Prueba: descargue un paquete globalmente sin usar sudo.

npm install -g jshint

En lugar de los pasos 2-4, puede usar la variable ENV correspondiente (por ejemplo, si no desea modificar ~ / .profile):

NPM_CONFIG_PREFIX=~/.npm-global

1
trabajó en Mojave. Muchas gracias después de 4-5 horas de resolución de problemas, ¡esto funcionó!
Johnny

11

La creación de package.json usando npm init resolvió mi problema.


Pero no estoy seguro de por qué se requiere el archivo package.json al instalar el módulo de nodo, ya que el archivo package.json no se actualiza ni se usa en mi caso porque no he usado --save o --save-dev o un comando similar.
xruptronics

esto es raro. Creo que algo se estropeó en su npm conf y al reiniciarlo, de todos modos debería ser un misterio para siempre, ya que no pude encontrar una sola referencia a un problema similar en otro lugar.
AJS

Tuve un problema similar con npm 6.9.0 y esto también funcionó para mí.
Chris Marotta

11

Tuve un problema en Linux. escribí

chown -R myUserName ./* 

en mi carpeta de proyecto.


7
Muy poco recomendado. Eso afecta a todos sus directorios y elimina los derechos de root en cualquiera de ellos. Si algunas cosas necesitan establecerse como root, esto destruye su configuración actual.
Patrick Da Silva

8

Por lo que puedo ver en tus registros, publicaste:

npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'mkdir',
npm ERR!   path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_type: 'Directory',
npm ERR!   fstream_path: '/home/rupesh/node_modules/lodash',
npm ERR!   fstream_class: 'DirWriter',

El directorio /home/rupesh/node_modules/no tiene los permisos necesarios para crear el directorio, por lo que ejecutarlo chown -r rupesh:rupesh /home/rupesh/node_modules/debería resolverlo.


Haciendo chown -R rupesh: rupesh / home / rupesh / node_modules / y ejecutando npm install lodash nuevamente instalé lodash dentro de la carpeta ~ / node_module. Pero esta vez no arroja un error. Pero no es donde pretendo instalar.
xruptronics

sí, sé que debe crear el proyecto en su directorio de inicio en lugar de en el escritorio. npm por alguna razón está instalando sus módulos /home/rupesh/node_modulespor alguna razón. Cualquier forma de trabajar en su directorio de inicio debería ser ideal de todos modos
AJS

Creo que ~ / Projects / es6 es equivalente a ~ / Desktop / es6 en cuanto a estructura. Lo que tengo problemas para averiguar es por qué no se crea node_modules dentro de la carpeta es6 y por qué el módulo lodash (o lo que sea) no está instalado dentro de eso. No había enfrentado este problema antes, pero lo que salió mal hoy, eso es lo que quiero averiguar.
xruptronics

Sí, leí mis dos comentarios anteriores y me di cuenta de la estupidez :), bueno, miré a mi alrededor y no pude encontrar a nadie más que tuviera el mismo problema. ¿Tu código puede encontrar el loadashmódulo?
AJS

7

No tiene permisos de escritura para others(rx). Prueba con

chmod a+w <folder>

y repetir.


2
¿No chowntiene una -ropción para evitar tener que usarlo en todas y cada una de las carpetas node_modules?
DrakaSAN

@Juanjo Salvador No funcionó, arroja el mismo error.
xruptronics

@DrakaSAN sí, chown tiene una opción recursiva.
Juanjo Salvador

6

Esto resolvió mi problema de inmediato: mac Mojave 10.14.6 - PhpStorm.

Error de rechazo no controlado: EACCES: permiso denegado, mkdir '/Users/myname/.npm/_cacache/index-v5/fb/5a'

sudo chown -R $USER:$GROUP ~/.npm
sudo chown -R $USER:$GROUP ~/.config

Publicación original: https://stackoverflow.com/a/50639828


4

FWIW Tuve los mismos síntomas, pero con un paquete diferente. Creación package.jsony funcionando npm inithizo NO solucionar mi problema.

En este sistema, aparentemente se estaban creando nuevas carpetas en esta ubicación con permisos de root. Durante npm install, se crean nuevas carpetas. Esto provocó que la instalación de npm fallara parcialmente, incluso con sudo.

La solución fue ejecutar npm install appen una ubicación diferente sin umask de root.


4

Intente dar todos los permisos a la carpeta de su proyecto con el siguiente comando

sudo chmod -R 777 /yourProjectDirectoryName

corre con

sudo npm install lodash

Es una solución jr
Pablo Papalardo

Puede que ni siquiera necesites 777. Para mí, el problema era que los # eran demasiado bajos. (775 lo arregló)
Andrew

"Establecer permisos 777 para un archivo o directorio significa que todos los usuarios podrán leerlo, escribirlo y ejecutarlo, y puede representar un gran riesgo de seguridad". - linuxize.com/post/what-does-chmod-777-mean
MillerC

4

Un problema relacionado:

3 horas desperdiciadas durante varios días.

En una máquina AWS EC2, a continuación funcionó:

sudo chown -R $(whoami) /home/ubuntu/.cache
sudo chown -R $(whoami) /home/ubuntu/.config
sudo chown -R $(whoami) /home/ubuntu/.local
sudo chown -R $(whoami) /home/ubuntu/.npm
sudo chown -R $(whoami) /home/ubuntu/.pm2

Espero que ayude.


3

Resolví este problema cambiando el permiso de mi directorio npm. Fui al directorio global de npm por mí, estaba en

/home/<user-name>

Fui a este directorio ingresando este comando

cd /home/<user-name>

y luego cambió el permiso de la carpeta .npm ingresando este comando.

sudo chmod -R 777 ".npm"

Me funcionó de maravilla. Pero hay una falla de seguridad con esto, es decir, su directorio de paquetes globales es accesible para todos los niveles.


¿Por qué permitiría que todo el mundo acceda a esta carpeta en particular?
egdavid

2

Primero instale sin -g (global) en root. Después de intentar usar -g (global) funcionó para mí.


¡¡Trabajó!! En Mac moví mi carpeta de código a mi carpeta raíz: HardDrive /, y "npm install" se ejecutó sin problemas. Luego moví mi carpeta de código de regreso a donde quería dentro de HardDrive / users / myUserName / Projects / code, ejecuté "npm install" nuevamente, y esta vez funcionó.
Josh

2

LUBUNTU 19.10 / Mismo problema en ejecución: $npm start

dump: Error: EACCES: permiso denegado, abra '/home/simon/xxx/pagebuilder/resources/scripts/registration/node_modules/.cache/@babel/register/.babel.7.4.0.development.json' en Object. fs.openSync (fs.js: 646: 18) en Object.fs.writeFileSync (fs.js: 1299: 33) en guardar (/ home / simon / xxx / pagebuilder / resources / scripts / registration / node_modules / @ babel / register / lib / cache.js: 52: 15) en _combinedTickCallback (internal / process / next_tick.js: 132: 7) en process._tickCallback (internal / process / next_tick.js: 181: 9) en Function.Module.runMain (module.js: 696: 11) en Object. (/home/simon/xxxx/pagebuilder/resources/scripts/registration/node_modules/@babel/node/lib/_babel-node.js:234:23) en Module._compile (module.js: 653: 30) en Object .Module._extensions..js (module.js: 664: 10) en Module.load (module.js: 566: 32)

Parece que mi usuario predeterminado (administrador) no tenía derechos en los directorios del módulo de nodo.

¡Esto me lo arregló!

$ sudo chmod a+w node_modules -R ## from project root


2

Intente usar esto: En la línea de comandos, en su directorio de inicio, cree un directorio para instalaciones globales:

mkdir ~/.npm-global

Configure npm para usar la nueva ruta del directorio:

npm config set prefix '~/.npm-global'

En su editor de texto preferido, abra o cree un archivo ~ / .profile y agregue esta línea:

export PATH=~/.npm-global/bin:$PATH

En la línea de comando, actualice las variables de su sistema:

source ~/.profile

Pruebe la instalación del paquete a nivel mundial sin usar sudo, espero que ayude


1

Aquí está la solución para los usuarios de GNU / Linux (Debian) (Reemplace USERNAME con su nombre de usuario ):

sudo chown -R $USER:$(id -gn $USER) /home/USERNAME/.config

0

¡Elimina la carpeta dist y esto resuelve mi problema!


0

En Windows, terminó siendo que IIS ya estaba usando el puerto.

Detener IIS (clic derecho, Salir), resolvió el problema.


0

Simplemente cambie el propietario del node_modulesdirectorio global para que sea su usuario:

sudo chown -R $USER:$GROUP /usr/local/lib/node_modules

0

Probé la mayoría de estas sugerencias, pero ninguna funcionó. Luego corrí npm clean-instally resolvió mis problemas.


0

node recomienda ejecutar lo siguiente:

 sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config

Si ejecuta

npm config

Verás algo como esto

                   npm update check failed                   
             Try running with sudo or get access             
            to the local update config store via             
 sudo chown -R $USER:$(id -gn $USER) /home/venkatesh/.config 

Funcionó para mí.


-3

Ejecute estos comandos y el problema se resolverá.

sudo chmod -R 777 /usr/local/bin
sudo chmod -R 777 /usr/local/lib/node_modules

Para /usr/localy todos los subdirectorios, los permisos deben ser rwxr-xr-xpropiedad de root. Los usuarios del sistema pueden leer y ejecutar dentro de esta estructura de directorios, pero no pueden editar ni crear archivos. Dicho esto, su respuesta sugiere otorgar permisos a todos. Y, sin describir cómo y qué se verá afectado, o por qué se resolverá el problema.
Kuliraj
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.