Acabo de instalar node y npm a través del paquete en nodejs.org y cada vez que intento buscar o instalar algo con npm arroja el siguiente error, a menos que sudo el comando. Tengo la sensación de que este es un problema de permisos? Ya soy el administrador.
npm ERR! Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR! { [Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json']
npm ERR! errno: 3,
npm ERR! code: 'EACCES',
npm ERR! path: '/Users/chietala/.npm/-/all/.cache.json' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
npm ERR! System Darwin 12.2.0
npm ERR! command "node" "/usr/local/bin/npm" "search" "bower"
npm ERR! cwd /Users/chietala
npm ERR! node -v v0.10.4
npm ERR! npm -v 1.2.18
npm ERR! path /Users/chietala/.npm/-/all/.cache.json
npm ERR! code EACCES
npm ERR! errno 3
npm ERR! stack Error: EACCES, open '/Users/chietala/.npm/-/all/.cache.json'
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /Users/chietala/npm-debug.log
npm ERR! not ok code 0
sudo chown
: github.com/sindresorhus/guides/blob/master/…Respuestas:
Esto parece un problema de permisos en su directorio de inicio. Para reclamar la propiedad del directorio .npm , ejecute:
fuente
whoami
era un marcador de posición, pero funciona escrito literalmente como está, por lo que debe ser una variable que no entiendo.whoami
aseguran que se ejecute correctamente y luego se coloque en el comando chownsudo chown -R simpleascouldbe ~/.npm
Se requerirán los permisos que usó al instalar Node al hacer cosas como escribir en su directorio npm (
npm link
,npm install -g
, etc.).Probablemente ejecutó la instalación de nodo con permisos de root, por eso la instalación global del paquete le pide que sea root.
Solución 1: NVM
En una máquina de desarrollo, no debe instalar y ejecutar un nodo con permisos de root, de lo contrario
npm link
,npm install -g
necesitará los mismos permisos.NVM (Node Version Manager) le permite instalar Node sin permisos de root y también le permite instalar muchas versiones de Node para jugar fácilmente con ellos. Perfecto para el desarrollo.
nvm install node
Ahora
npm link
,npm install -g
ya no requerirá que seas root.Editar: Consulte también https://docs.npmjs.com/getting-started/fixing-npm-permissions
Solución 2: Instalar paquetes globalmente para un usuario determinado
Si está en OSX o Linux, puede crear un directorio dedicado para el usuario para su paquete y configuración global
npm
ynode
saber cómo encontrar paquetes instalados globalmente.Consulte este excelente artículo para obtener instrucciones paso a paso sobre cómo instalar módulos npm a nivel mundial sin sudo.
Consulte también: documentación de npm sobre la fijación de permisos npm .
fuente
npm ls -gp | awk -F/ '/node_modules/ && !/node_modules.*node_modules/ {print $NF}' | xargs npm -g rm
- Tuve que reinstalar nodejs y en un shell raíz y desinstalarlos, de lo contrario, continuará teniendo enlaces simbólicos a yo, gruñido, etc.sudo npm list -g --depth=0. | awk -F ' ' '{print $2}' | awk -F '@' '{print $1}' | sudo xargs npm remove -g
stackoverflow.com/a/22290968/1449157 y luego lo eliminénpm
y lo instalé a través denvm
También necesitará el permiso de escritura en el
node_modules
directorio:fuente
~/tmp
directorio para mí.node_modules
en/usr/local/lib/
. wtf?Then I ran sudo chown -R $USER /* and everything was fine
- NO - estás arruinando tu máquina.Cambiar el propietario en las carpetas "system-global" es un hack. En una instalación nueva, configuraría NPM para usar una ubicación que ya se puede escribir para programas "globales de usuario":
Luego, asegúrese de agregar esa carpeta a su ruta:
Ver la respuesta de @ErikAndreas a los módulos NPM no se instalará globalmente sin sudo y una guía paso a paso más larga de @sindresorhus con también conjuntos .
$MANPATH
fuente
$HOME
, normalmente su.profile
secuencia de comandos se encargará de$PATH
la próxima vez que la obtenga (por ejemplo, la próxima vez que inicie sesión).$HOME
e interferiría con otros (¿futuros?) Archivos / subcarpetas NPM. Prefiere mantener los binarios de diferentes gestores de paquetes / idiomas / sistemas de compilación separados, y establecerlos explícitamente$PATH
(en un script de tiempo de inicio de sesión).~/lib/node_modules
, con su CLI asociada, si existe, en~/bin
. Para muchos usuarios, especialmente si no tienen raíz, tanto~/bin
y~/lib
ya existen.~/bin
y luego hacer lo mismo para uno o dos administradores de paquetes adicionales. Puede que no suceda hoy o mañana, pero existe un claro riesgo de que dos paquetes de diferentes administradores tengan una colisión de nombres y sobrescriban los archivos de los demás. Ese es un caso suficientemente bueno para que tenga prefijos separados. (Se agradecerían ejemplos concretos).Encontré esto al instalar Recess ( https://github.com/twitter/recess ) para compilar mi CSS para Bootstrap 3.
Al instalar el recreo:
Necesita desbloquear permisos en su
home
directorio, como dice Noah :También necesita permisos de escritura en el
node_modules
directorio, como dice Xilo , por lo que si aún no funciona, intente:Si todavía ve errores, es posible que también deba corregir los
/usr/local
permisos :Tenga en cuenta que, como se indica en esta publicación, en
/usr/local/
realidad no es un directorio del sistema si está en una Mac, por lo que esta respuesta es realmente "segura" para los usuarios de Mac. Sin embargo, si está en Linux, consulte la respuesta de Christopher Will a continuación para obtener una solución segura para el usuario (pero más compleja) para múltiples usuarios.fuente
¡¡¡Cuidado!!! ¡¡¡Cuidado!!! ¡¡¡Cuidado!!!
chown o chmod NO es la solución, debido al riesgo de seguridad.
En cambio, haga esto, haga:
Primero verifique, a dónde apunta npm, si llama:
Si se devuelve / usr, puede hacer lo siguiente:
Esto crea un npm-Directory en su Home-Directory y apúntelo
npm
.Para que estos cambios sean permanentes, debe agregar el comando de exportación a su .bashrc:
fuente
$PATH
, no la cadena en sí. Deberías cambiar eso.Otras respuestas sugieren cambiar las propiedades o permisos de los directorios del sistema a un usuario específico. No recomiendo hacerlo, ¡esto puede volverse muy incómodo y dañar todo el sistema!
Aquí hay un enfoque más genérico y seguro que también admite usuarios múltiples.
Cree un nuevo grupo para usuarios de nodo y agregue los usuarios necesarios a este grupo. Luego configure la propiedad de los archivos / directorios dependientes de nodos para este grupo.
Ahora puede instalar fácilmente sus módulos como usuario
Algunos módulos (gruñidos, bower, yo, etc.) aún deberán instalarse como root. Esto se debe a que crean enlaces simbólicos en / user / bin /.
Editar
3 años después, recomendaría usar Node Version Manager . Le ahorra mucho tiempo y problemas.
fuente
staff
grupo integrado para otorgar permisos a mis carpetas de desarrollo. Además, es una buena idea ejecutarchmod g+ws node_modules
para asegurarse de que su grupo tenga permiso de lectura / escritura./usr/lib
está bajo el control de su administrador de paquetes del sistema y no debe realizar ningún cambio allí.La documentación oficial sobre cómo corregir los
npm install
permisos con unEACCES
error se encuentra en https://docs.npmjs.com/getting-started/fixing-npm-permissions .Encontré este problema después de una nueva instalación de nodo usando el
.pkg
instalador en OSX. Aquí hay algunas respuestas excelentes, pero todavía no he visto un enlace a npmjs.com.Opción 1: cambiar el permiso al directorio predeterminado de npm
Encuentre la ruta al directorio de npm:
Para muchos sistemas, esto será / usr / local .
ADVERTENCIA : Si la ruta que se muestra es solo / usr , cambie a la Opción 2 .
Cambie el propietario de los directorios de npm al nombre del usuario actual (¡su nombre de usuario!):
Esto cambia los permisos de las subcarpetas utilizadas por npm y algunas otras herramientas ( lib / node_modules , bin y share ).
Opción 2: cambiar el directorio predeterminado de npm a otro directorio
Hay momentos en que no desea cambiar la propiedad del directorio predeterminado que usa npm (es decir, / usr ) ya que esto podría causar algunos problemas, por ejemplo, si comparte el sistema con otros usuarios.
En su lugar, puede configurar npm para usar un directorio completamente diferente. En nuestro caso, este será un directorio oculto en nuestra carpeta de inicio.
Haga un directorio para instalaciones globales:
Configure npm para usar la nueva ruta del directorio:
Abra o cree un archivo ~ / .profile y agregue esta línea:
De vuelta en la línea de comando, actualice las variables de su sistema:
fuente
/usr/bin/
? Ahora solo tu usuario puede acceder a él. Inicia sesión como otra persona, todavía no tiene acceso, ¡ya que los archivos están en el directorio de inicio de otro usuario!Como si necesitáramos más respuestas aquí, pero de todos modos ...
Sindre Sorus tiene una guía Instalar paquetes npm a nivel mundial sin sudo en OS X y Linux que describe cómo instalar de manera limpia sin alterar los permisos:
Consulte la fuente de esta guía para obtener las últimas actualizaciones.
fuente
TL; DR
-
Cuando lo usa
npm
, descarga paquetes en su directorio de inicio de usuario. Cuando corres como sudo,npm
instala archivos en el mismo directorio, pero ahora son propiedad de root.Entonces, esto es lo que le sucede a absolutamente todas las personas que alguna vez han usado
npm
:npm install foo
sudo install -g foo-cli
sin problemanpm install bar
npm
diseñadores ahora que tiene que ir achmod
un directorio nuevamenteCuando usa la opción
-i
o-H
con sudo, su directorio de inicio serároot
el directorio de inicio. Cualquier instalación global almacenará en caché los paquetes en/root/.npm
lugar de losroot
archivos propios en/home/me/.npm
.Simplemente use
sudo -i
osudo -H
cuando se ejecutenpm install
para instalar paquetes globales y susnpm
problemas de permisos desaparecerán.Para bien
http://hood.ie/blog/why-you-shouldnt-use-sudo-with-npm.html
- qv la respuesta aceptada para arreglar un ya jodido
npm
.fuente
Tuve un problema similar en los módulos NPM que no se instalarán globalmente sin sudo , el problema era que cuando instalé el nodo lo hice con sudo a través de chris / lea ppa repo .
Mi solución fue desinstalar el nodo y luego instalarlo de esta manera:
Descargue las últimas fuentes de nodo estable de nodejs.org # en mi caso node-v0.10.20.tar.gz
PD: si no desea cambiar la propiedad de la carpeta / usr / local, puede instalarla en algún lugar que ya posea. El problema de este enfoque es que tendrá que vincular la carpeta de instalación con la línea de comando bash para que podamos usar el comando de nodo más adelante
Con cualquiera de esos enfoques, podrá hacer lo siguiente sin usar sudo
fuente
sudo chown $USER /use/local
antes de construir. Se ve bien hasta ahora, ¡es hora de intentar construir un átomo! ¡Gracias!Cuando ejecuta npm install -g somepackage, puede recibir un error de EACCES que le pide que ejecute el comando nuevamente como root / Administrator. Es un problema de permisos.
Es fácil de arreglar , abra su terminal (Aplicaciones> Utilidades> Terminal)
** Le recomiendo encarecidamente que no use la administración de paquetes con sudo (sudo npm -g install something), porque puede obtener algunos problemas más adelante **
Referencia: http://foohack.com/2010/08/intro-to-npm/
fuente
sudo chown -R `whoami` ~/.npm
,sudo chown -R `whoami` /usr/local/lib
yPara Mac (adoptado de la respuesta de Christoper Will)
Mac OS X 10.9.4
Preferencia del sistema> Usuarios y grupos> (desbloquear)> presione +:
Nueva cuenta> "Grupo"
Nombre de cuenta : nodegrp
Después de crear el grupo, marque el usuario que se incluirá en este grupo
fuente
sudo
o cambiar la propiedad del grupo de carpetas para que pueda ser modificado por el usuario normal? Si se supone que el usuario normal no debe realizar ninguna acción en esta carpeta, por supuesto, no debe cambiar la propiedad del grupo de la carpeta.-H
bandera. Específicamente,sudo -H npm install -g <pkg>
. Esto garantiza la delineación adecuada de los permisos para el sistema y las carpetas de usuario. Lo que no desea hacer es usarsudo npm install -g
, porque esto instala los archivos propiedad de root en su directorio de usuarios. Sería genial si npm fuera lo suficientemente inteligente como para hacer esto de la manera correcta, pero no lo es, por lo que debe usar el-H
indicador de sudo para instalarlo correctamente a nivel mundial.En mi caso, es por el permiso de ~ / tmp, así que hago:
¡Y esta bien!
fuente
Para mí, ejecuta solo
no funciona Entonces, yo también ejecuto
¡Y todo funciona bien!
fuente
/usr/lib
son archivos del sistema y no deben ser propiedad de su cuenta de usuario personal.PROBLEMA : Usted (el usuario) no tiene el conjunto correcto de permisos para el directorio.
La salida instantánea es ejecutar la instalación de npm usando sudo, pero esto puede darle el mismo error o una instalación incorrecta.
Y cambiar la propiedad del directorio no es una buena opción, un parche temporal.
Solución / sugerencia : cambiar el directorio predeterminado de npm (de documentos oficiales )
Haga una copia de seguridad de su computadora antes de seguir adelante.
(opcional) En caso de que tenga una instalación errónea, primero desinstálela:
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
o~/.bash_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 o reinicie el terminal:
source ~/.profile
(opcional) Prueba: descargue un paquete globalmente sin usar sudo.
npm install -g jshint
fuente
En caso
sudo chown -R $(whoami) ~/.npm
que no funcionó para usted, o necesita una solución de comando no terminal.El problema es que su cuenta de usuario no tiene permiso de escritura en la carpeta node_modules, por lo que puede hacer lo siguiente
Abra el buscador y presione
cmd
+shift
+g
esto abrirá ir a la carpeta con urlEscribe la siguiente ruta
/usr/local/lib/node_modules
y presiona irHaga clic derecho en la
node_modules
carpeta y elijaGet Info
Desplácese hacia abajo hasta la
sharing & permissions
secciónDesbloquee para poder hacer cambios.
Presione
+
y agregue su cuenta de usuarioAsegúrese de elegir
Read & Write
en el menú desplegable privilegioAhora debería poder instalar paquetes sin
sudo
problemas de permiso y deberían resolversefuente
Problema: no tiene permiso para escribir en los directorios que npm usa para almacenar paquetes y comandos globales.
Solución: permitir permiso para npm.
Abrir una terminal:
Ingrese este comando:
Esta solución permite permiso SOLO para los directorios necesarios, manteniendo los otros directorios agradables y seguros.
fuente
npm config get prefix
devuelve algo en la carpeta de inicio, esta solución arreglará los permisos, pero no resuelve el problema subyacente de instalar paquetes globales de manera segura para un entorno compartido.Otra gran solución aquí para configurar NPM correctamente, ejecuta los siguientes comandos:
fuente
podrías probar esto, funciona en ubuntu y mac
fuente
Lo que para mí parece ser la mejor opción es la que se sugiere en la documentación de npm , que es verificar primero dónde se instalan los módulos_nodo globales de forma predeterminada ejecutando
npm config get prefix
. Si obtiene, como lo hago en Trusty,/usr
es posible que desee cambiarlo a una carpeta que pueda tener de forma segura sin estropear las cosas como lo hice yo.Para hacer eso, elija o cree una nueva carpeta en su sistema. Es posible que desee tenerlo en su directorio de inicio o, como yo, bajo
/usr/local
consistencia porque también soy un usuario de Mac (prefiero no tener que buscar en diferentes lugares dependiendo de la máquina en la que me encuentre). Otra buena razón para hacerlo es el hecho de que la/usr/local
carpeta probablemente ya esté en su RUTA (a menos que quiera jugar con su RUTA), pero es probable que su carpeta recién creada no lo esté y necesitaría agregarla a la carpeta RUTA en su archivo .bash-profile o .bashrc .En pocas palabras, cambié la ubicación predeterminada de los módulos globales con
npm config set prefix '/usr/local'
, creé la carpeta/usr/local/lib/node_modules
(será utilizada por npm) y cambié los permisos para las carpetas utilizadas por npm con el comando:Ahora puede instalar globalmente cualquier módulo de forma segura. ¡Espero que esto ayude!
fuente
Así es como resolví el problema en Windows 8.1:
fuente
La mejor solución sería la que es proporcionada por la documentación de la NPM.
Para Ubuntu, la solución sugerida es la Opción # 2
Breves pasos:
Cree un directorio para instalaciones globales:
mkdir ~/.npm-global
Configure npm para usar la nueva ruta del directorio: puede ayudarlo a verificar si el prefijo se actualizó o no. El resultado sería <Your Home Directory> /. Npm-global
npm config set prefix '~/.npm-global'
npm config get prefix
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
En lugar de los pasos 2-4, también puede usar la variable ENV correspondiente (por ejemplo, si no desea modificar ~ / .profile):
NPM_CONFIG_PREFIX=~/.npm-global
Para Mac, la solución sugerida es la Opción # 3
En Mac OS puede evitar este problema por completo utilizando el administrador de paquetes Homebrew
brew install node
fuente
Lo resuelvo cambiando el propietario de root a mi nombre de usuario
sudo chown -R me:me /home/me/.config/configstore/
cámbiame con tu nombre de usuario y grupo.
fuente
Me gusta usar grupos de ubuntu para lograr esto en lugar de cambiar de propietario. Es bastante simple.
Primero instale nodejs y npm usando apt-get
sudo apt-get update && sudo apt-get install nodejs npm
Averigua quién está conectado, es decir, nombre de usuario, ejecuta el siguiente comando para verlo en la terminal
whoami
Puede ver la lista de grupos que le asignaron usando un comando muy simple, normalmente el primer grupo es su nombre de usuario.
groups
Ejecute siguiente para permitir el acceso al usuario conectado
sudo chmod 777 -R /usr/local && sudo chgrp $(whoami) -R /usr/local
Actualizar npm y nodejs
npm install -g npm
Estás listo, tu usuario puede ejecutar comandos npm sin sudo
También puede consultar este enlace https://askubuntu.com/a/1115373/687804
fuente
En Mac OS X, cuando se instala con Homebrew
brew install npm
, la ruta de instalación es/usr/local/share/npm/
con ambasbin/
ylib/node_modules/
subcarpetas.Ejecutar este comando para cambiar de propietario a su usuario actualmente conectado debe arreglarlo todo y permitirle instalar paquetes globales de NPM sin él
sudo
.osx cerveza casera
fuente
npm config
lugar.En realidad, también estaba teniendo el mismo problema. Estaba ejecutando Ubuntu. El problema mío surge porque había perdido mi clave pública de Ubuntu. Incluso la actualización de mi sistema no estaba sucediendo. Estaba dando error GPG. En ese caso, puede recuperar su clave utilizando este comando:
¡Después de eso, npm funciona bien!
fuente
John Papa señala la historia y el razonamiento detrás de este problema y ofrece una solución sólida :
Los pasos de John Papa son:
Espero que esto ayude a los curiosos!
fuente
Esta es la solución que utilicé y trabajé. Traté de utilizar
whoami
nunca funcionó.sudo chown -R $USER /usr/local/lib/node_modules
entonces
sudo chown -R $USER /usr/local/bin/npm
entonces
sudo chown -R $USER /usr/local/bin/node
fuente
La respuesta de @Yves M. fue muy similar a mi solución. Aquí están los comandos que usé, que eran ligeramente diferentes de los suyos.
Luego consulte la última versión:
Luego instale la versión más nueva:
ejemplo
fuente