node.js - error - npm warn checkpermissions missing write access to/usr/local/lib/node_modules
Error: EACCES: permiso denegado, acceso ''/ usr/local/lib/node_modules'' reacciona (16)
¿Qué podría estar causando el error
Error: EACCES: permission denied, access ''/usr/local/lib/node_modules''
?
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! { 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! A complete log of this run can be found in:
npm ERR! /Users/macbookmd101/.npm/_logs/2018-02-21T16_26_08_421Z-debug.log
Al instalar paquetes globales en
ubuntu
, necesita permisos de escritura especiales mientras escribe en la carpeta
usr/bin
.
Es por razones de seguridad.
Entonces, cada vez que instale un paquete global, use:
sudo npm install -g [package-name]
Para su caso específico, será:
sudo npm install -g typescript
Encuentro un problema similar con el módulo webpack. Mi solución: eliminar la carpeta node_modules rm -rf node_modules y ejecutar npm i sin sudo: la instalación debería funcionar.
Estaba tratando de instalar react expo y aparte de sudo tuve que agregar --unsafe-perm
Me gusta esto. Esto resuelve mi problema
sudo npm install -g expo-cli --unsafe-perm
He usado sudo, pero no resolvió el problema, he solucionado el problema cambiando el permiso de la carpeta node_modules,
sudo chmod -R 777 node_modules
Si lo desea, puede reemplazar 777 con cualquier otro código si no establece el permiso para todos los usuarios / grupos.
Necesita el permiso de los niveles de superusuario para instalar React. En Linux / Unix, la cuenta de superusuario generalmente se denomina ''root''.
Para obtener el privilegio de superusuario, simplemente ejecute el siguiente comando en su terminal:
sudo i
y luego simplemente ejecute el comando para instalar React:
npm install -g create-react-app
Para minimizar la posibilidad de errores de permisos, puede configurar npm para usar un directorio diferente. En este ejemplo, creará y utilizará un directorio oculto en su directorio de inicio.
Copia de seguridad de tu computadora.
En la línea de comando, en su directorio de inicio, cree un directorio para instalaciones globales:
mkdir ~/.npm-global
Configure npm para usar la nueva ruta de 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 del sistema: source
~/.profile
Para probar su nueva configuración, instalar un paquete globalmente sin usar sudo
Parece que te encuentras con problemas de permisos.
Si está instalando
npm-packages
, es posible que obtenga un error
EACCES
cuando intente instalar un paquete globalmente.
Esto significa que no tiene permiso para escribir en los directorios que
npm
usa para almacenar paquetes y comandos globales.
Intente ejecutar comandos:
sudo chmod u+x -R 775 ~/.npm
y
sudo chown $USER -R ~/.npm
o simplemente puede ejecutar cualquier comando
npm
con
sudo
, eso debería resolver su problema.
Si está instalando un
npm-package
localmente, entonces debe estar en el directorio de su proyecto local y puede intentar ejecutar el
sudo npm install <pkg-name>
para instalar el paquete requerido.
El propósito de usar
sudo
es que cambiará los permisos de su propietario para que pueda autorizar a su usuario actual a ejecutar comandos
npm
.
Le recomiendo que eche un vistazo a https://docs.npmjs.com/getting-started/fixing-npm-permissions
Parece que trató de instalar un paquete npm globalmente en lugar de localmente, como describe la
man npm install
:
El argumento -g o --global hará que npm instale el paquete globalmente en lugar de localmente.
Generalmente, cuando está configurando un proyecto npm (entre muchos otros que podría tener), no es una buena idea instalar paquetes en los módulos globales de Node.js (/ usr / local / lib / node_modules), como su registro de depuración sugirió.
En lugar de usar
-g
, use
--save
, que guardará automáticamente el paquete como una dependencia para su archivo
package.json
:
Me gusta esto:
$ npm install express-generator --save
$ cat package.json
{
"name": "first_app_generator",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo /"Error: no test specified/" && exit 1"
},
"author": "ivanleoncz",
"license": "MIT",
"dependencies": {
"express-generator": "^4.16.0"
}
}
Pero como se mencionó en las otras respuestas, si va a usar
-g
, debe usar
sudo
(
si su usuario tiene privilegios de sudo: vea / etc / sudoers
) al realizar
npm install express-generator -g
, pero de hecho, es No es una buena idea, posiblemente causando problemas de permisos.
DARSE CUENTA
Hay instrucciones para instalar
express-generator
con la opción
-g
, para que el script
express-cli.js
esté disponible en la ruta del sistema, pero también puede usar el script instalado localmente, ubicado en
node_modules
si su proyecto npm:
$ ./node_modules/express-generator/bin/express-cli.js --view=pug myapp
Si aparece un mensaje como / usr / bin / env: ''nodo'': no aparece dicho archivo o directorio , instale
nodejs-legacy
(Debian / Ubuntu)
En mi humilde opinión, usar
-g
(también usando
sudo
) es como
hic sunt dracones
, si no estás seguro de las consecuencias.
Para mayor información:
Pude deshacerme de este problema instalando
nvm
y luego configurando el nodo a la última versión.
-
Instale
nvm
usandocurl
(para la última versión vaya a nvm.sh )
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
- Lista de versiones de nodo disponibles
nvm ls
v10.12.0
predeterminado -> v10.12 (-> v10.12.0)
nodo -> estable (-> v10.12.0) (predeterminado)
estable -> 10.12 (-> v10.12.0)
...
- Elija qué versión de nodo usar
nvm use v10.12
nvm no es compatible con la opción "prefijo" de la configuración npm: actualmente configurado en ""
- Ejecute esto para desactivar la opción:
nvm use --delete-prefix v10.12.0
Después de seguir los comandos anteriores, podrá instalar react / angular en Ubuntu.
Simplemente puede cambiar el propietario o simplemente usar sudo antes de ordenar así
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
(
cambiar propietario
)
o
sudo npm install -g json-server
Eso es.
Tenga cuidado con todas las respuestas que cambian el propietario de todos los directorios en / usr / local. ¡ Básicamente, no ensucie el sistema Linux!
Creo que la mejor manera es usar su propia carpeta para localizar todos los paquetes globales: https://www.competa.com/blog/how-to-run-npm-without-sudo/
Todo lo que necesita hacer es agregar USUARIO al propietario de / local / lib
sudo chown -R $USER /usr/local/lib
Use este comando para instalar
npm
como usuario de sudo:
sudo npm install -g create-react-app
en lugar de npm install -g create-react-a pp.
cambia los permisos de tu archivo ... así
primero verifique quién posee el directorio
ls -la /usr/local/lib/node_modules
está negando acceso porque la carpeta node_module es propiedad de root
drwxr-xr-x 3 root wheel 102 Jun 24 23:24 node_modules
así que esto debe cambiarse cambiando la raíz a su usuario, pero primero ejecute el comando a continuación para verificar su usuario actual ¿Cómo obtengo el nombre del usuario activo a través de la línea de comando en OS X?
id -un
O
whoami
luego cambia de dueño
sudo chown -R [owner]:[owner] /usr/local/lib/node_modules
O
sudo chown -R ownerName: /usr/local/lib/node_modules
intente agregar sudo antes de cualquier comando que esté intentando.
así: sudo npm install
Usar sudo con un comando en Linux / UNIX generalmente eleva sus permisos a niveles de superusuario. En Windows, la cuenta de superusuario generalmente se llama ''Administrador''. En Linux / Unix, la cuenta de superusuario generalmente se denomina ''root''.
El usuario root tiene permiso para acceder, modificar o eliminar casi cualquier archivo en su computadora. Las cuentas de usuario normales pueden acceder, modificar o eliminar muchos menos archivos. Las restricciones en una cuenta normal protegen su computadora de usuarios o programas no autorizados o dañinos. Algunos procesos requieren que realice acciones en archivos o carpetas a los que normalmente no tiene permisos de acceso. Instalar un programa al que todos puedan acceder es una de estas acciones.
En su caso, ejecutar el comando de instalación con sudo le otorga los permisos del superusuario y le permite modificar archivos que su usuario normal no tiene permiso para modificar.
Si enfrenta este problema en su Mac. Sigue estos pasos
Primero verifique quién es el propietario de este archivo utilizando el siguiente comando
ls -la /usr/local/lib/node_modules
encontrará un archivo como el siguiente, uno de ellos está debajo
drwxr-xr-x 3 rueda raíz 768 29 de mayo 02:21 node_modules
¿Ha notado que el archivo anterior es propio de la raíz, para realizar cambios en el interior, debe cambiar el propietario de la ruta de acceso?
puede usar verificar quién es el usuario actual con este comando
id -un (in my case user is yamsol)
y luego puede cambiar llamando a este comando (simplemente reemplace su nombre de usuario con ownerName)
sudo chown -R ownerName: /usr/local/lib/node_modules
en mi caso, como sabes, el usuario es "yamsol" llamaré a este comando de esta manera
sudo chown -R yamsol: /usr/local/lib/node_modules
Eso es.