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
xruptronics
fuente
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
Saniya syed qureshi
fuente
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
Vishal Patel
fuente
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.

xruptronics
fuente
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.

Sergey
fuente
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.

AJS
fuente
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.

Juanjo Salvador
fuente
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

pequeño
fuente
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.

Courtney Schwartz
fuente
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
Raj Gohel
fuente
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.

Manohar Reddy Poreddy
fuente
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.

Aniruddh Agarwal
fuente
¿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í.

Renjith
fuente
¡¡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

Simón P
fuente
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

AyushKatiyar
fuente
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
J-Snor
fuente
0

¡Elimina la carpeta dist y esto resuelve mi problema!

Hekmat
fuente
0

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

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

Atron Seige
fuente
0

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

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

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

MoKG
fuente
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í.

Manasvini Ganesh
fuente
-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
Nitin Jha
fuente
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