npm install -g less no funciona: EACCES: permiso denegado

203

Estoy tratando de configurar menos en phpstorm para poder compilar archivos .less en .css al guardar. He instalado node.js y el siguiente paso (de acuerdo con este https://www.jetbrains.com/webstorm/help/transpiling-sass-less-and-scss-to-css.html ) ejecuta este comando en terminal

npm install -g less

Sin embargo, cuando hago esto obtengo estos errores

  ~  npm install -g less
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/mkdirp/0.5.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/graceful-fs/3.0.8'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/extend/3.0.0'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/readable-stream/2.0.4'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/chalk/1.1.1'
npm WARN install Couldn't install optional dependency: EACCES: permission denied, mkdir '/Users/brentscholl/.npm/xtend/4.0.1'
npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules
/usr/local/lib
└─┬ less@2.5.3
  ├─┬ errno@0.1.4
   └── prr@0.0.0
  ├── image-size@0.3.5
  ├── mime@1.3.4
  ├─┬ promise@6.1.0
   └── asap@1.0.0
  └─┬ source-map@0.4.4
    └── amdefine@1.0.0

npm ERR! Darwin 15.0.0
npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" "-g" "less"
npm ERR! node v5.0.0
npm ERR! npm  v3.3.6
npm ERR! path /usr/local/lib/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access

npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules'
npm ERR!     at Error (native)
npm ERR!  { [Error: EACCES: permission denied, access '/usr/local/lib/node_modules']
npm ERR!   errno: -13,
npm ERR!   code: 'EACCES',
npm ERR!   syscall: 'access',
npm ERR!   path: '/usr/local/lib/node_modules' }
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!     /Users/brentscholl/npm-debug.log

Soy un novato completo aquí y no estoy seguro de qué hacer a continuación. ¡Cualquier ayuda será muy apreciada!

xslibx
fuente

Respuestas:

354

No se recomienda usar sudo. Puede darle un problema de permiso más adelante. Si bien lo anterior funciona, no soy fanático de cambiar las carpetas propiedad de root para que se puedan escribir para los usuarios, aunque puede que solo sea un problema con varios usuarios. Para evitar eso, podría usar un grupo, con 'usuarios npm', pero eso también es más sobrecarga administrativa. Consulte aquí las opciones para manejar los permisos de la documentación: https://docs.npmjs.com/getting-started/fixing-npm-permissions

Yo iría por la opción 2:

Para minimizar la posibilidad de errores de permisos, puede configurar npm para usar un directorio diferente. En este ejemplo, será un directorio oculto en su carpeta de inicio.

Haga un directorio para instalaciones globales:

 mkdir ~/.npm-global

Configure npm para usar la nueva ruta del directorio:

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

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

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

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

 source ~/.profile

Prueba: descargue un paquete globalmente sin usar sudo.

npm install -g jshint

Si aún muestra error de ejecución de permisos (mac os):

sudo chown -R $USER ~/.npm-global   

Esto funciona con la instalación predeterminada de ubuntu de:

sudo apt-get install nodejs npm

yo recomiendo nvm si desea más flexibilidad en la gestión de versiones: https://github.com/creationix/nvm

En MacOS use brew, debería funcionar sin necesidad sudode configuración si está en una npmversión reciente . Disfruta :)

Vincent Gerris
fuente
Atención: en Ubuntu 18.04 tuve que cerrar sesión y volver a iniciarla antes de que el cambio se aplicara automáticamente a todas las ventanas de terminal nuevas.
Alexander Nied
Alexander, ¿te aseguraste de usar el comando fuente? Eso debería encargarse de establecer las variables de entorno correctas, no debería ser necesario cerrar sesión (pero funciona).
Vincent Gerris el
esto no funcionó $ npm install -g jshint npm ERR! escribir después de finalizar npm ERR! Se puede encontrar un registro completo de esta ejecución en: npm ERR! /home/xx/.npm/_logs/2019-02-22T06_35_08_821Z-debug.log
Amjith
3
Gracias por este "En MacOS use brew"
Bijender Singh Shekhawat
110

Ejecute estos comandos en una ventana de terminal (nota: NO reemplace la parte $ USER ... ¡ese es un comando de Linux para obtener su usuario!):

sudo chown -R $USER ~/.npm
sudo chown -R $USER /usr/lib/node_modules
sudo chown -R $USER /usr/local/lib/node_modules
Vagner Rodrigues
fuente
77
¿Es una buena idea hacerse dueño de las cosas en /usr? ¿Qué pasa si alguien más quiere instalar cosas de nodo?
Mark
66
Trabajado para mí en MacOS High Sierra, sólo se necesitaba uno de los tres comandos: sudo chown -R $USER /usr/local/lib/node_modules. @ Mark Eso es cierto, pero por supuesto no hay problema si solo tienes un usuario.
Fabian von Ellerts
@FabianvonEllerts Bueno, aún es más fácil eliminar accidentalmente los archivos del sistema, ya que ya no necesitarás sudo ... Simplemente seguiría las mejores prácticas incluso cuando esté solo, pero depende de ti, por supuesto.
Mark
Estoy con Mark, a menos que tenga un usuario (e incluso entonces) no desea que los subdirectorios / usr sean propiedad de un usuario, en ese caso, mejor use el grupo. Pero quizás aún mejor, solo use brew como mencioné en mi respuesta, funcionará sin root fuera de la caja.
Vincent Gerris el
11

Vuelva a instalar node y npm con Node Version Manager (según lo escrito en la documentación de npm ) para evitar errores de permiso:

En OSX:

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh | bash

o sigue este artículo:

http://dev.topheman.com/install-nvm-with-homebrew-to-use-multiple-versions-of-node-and-iojs-easily/

Los usuarios de Windows deben instalar nvm-windows . Para obtener más ayuda sobre cómo instalar nvm, consulte el archivo léame nvm .

Luego elija por ejemplo:

nvm install 8.0.0
nvm use 8.0

Ahora puedes intentarlo de nuevo:

npm install -g less
gazdagergo
fuente
1
Usé esto para resolver problemas de permisos al instalar paquetes en CodeSandbox.
Keith Taylor el
11

Respuesta de Mac OS X

No tiene acceso de escritura al directorio node_modules

npm WARN checkPermissions Missing write access to /usr/local/lib/node_modules

Agregue su usuario al directorio con acceso de escritura

  1. Abrir carpeta que contiene node_modules

    abrir / usr / local / lib /

  2. Haga un cmd + I en la carpeta node_modules para abrir el cuadro de diálogo de permisos
  3. Agregue su usuario para tener acceso de lectura y escritura en la sección de compartir y permisos ingrese la descripción de la imagen aquí
Roderick Jonsson
fuente
La solución más fácil y eficiente para MacOS
itsazzad
8

ingrese la descripción de la imagen aquíUse sudo -i para cambiar a $ root, luego ejecute npm install -g xxxx

usuario3393929
fuente
7

Para mi entorno mac

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

resolver el problema

Asadut Zaman
fuente
Creo que esto ya está cubierto en la respuesta de @ VagnerRodrigues anterior.
entpnerd
Sí, lo acabo de mencionar para el entorno Mac
Asadut Zaman, el
3

Solo presiona debajo del comando:

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

Vamos a desglosarlo:

sudo

significa que estamos ejecutando este comando como root, el superusuario del sistema. Esto se debe a que no tenemos permiso para escribir en esa carpeta, pero root podrá arreglar cualquier permiso. Este comando también significa que el sistema le pedirá su contraseña para confirmar.

chown

es el comando que usamos para cambiar el propietario de un archivo o carpeta. Configuramos la opción -R para cambiar el propietario de forma recursiva, por lo que también tenemos acceso de propietario a todos los archivos que ya están contenidos allí.

$ USUARIO

es una variable de entorno configurada automáticamente para su nombre de usuario.

Y la pieza final es la ruta de la carpeta.

¡Ejecutar esta ruta hará que la carpeta sea suya, por lo que puede ejecutar de forma segura sus comandos npm install -g!

Akash Singh Sengar
fuente
0

He probado todas las soluciones sugeridas pero nada funcionó.

Estoy usando macOS Catalina 10.15.3

Vaya a / usr / local /

Seleccione la carpeta bin> Obtener información

Agregue su usuario a Compartir y permisos. Permisos de lectura y escritura. ingrese la descripción de la imagen aquí

Y vaya a la terminal y ejecute npm install -g @ ionic / cli

Me ha ayudado

Gohar SUltan
fuente
-1

En Linux, asegúrese de obtener toda la autoridad con:

sudo su
kira
fuente
-3

Hola, estoy usando Ubuntu 18 y también recibí este mensaje de error al instalar Prisma, luego agregué sudoal frente

sudo npm i -g prisma
UA_
fuente