NPM arroja error sin Sudo

    Si conoce JavaScript, entonces sabe acerca de NPM; es el administrador de paquetes predeterminado para Node.js, que es un entorno de ejecuci贸n de c贸digo abierto. Los desarrolladores usan NPM porque no solo proporciona una manera f谩cil de mantener el c贸digo, sino que tambi茅n les ayuda cuando tienen que compartirlo con otros desarrolladores que pueden reutilizar f谩cilmente el c贸digo durante su propio desarrollo.

    Un archivo NPM o un paquete NPM no es m谩s que un c贸digo reutilizable separado l贸gicamente que est谩 organizado como un directorio con algunos archivos en 茅l. Uno de los archivos que siempre encontrar谩 es el archivo “package.json”, que contiene metadatos sobre el paquete, entre otras cosas. La instalaci贸n de NPM a menudo puede generar problemas extra帽os si no se realiza correctamente. En este art铆culo hablar茅 sobre el problema de “errores de lanzamiento de NPM sin sudo” que a veces enfrentan los desarrolladores. Si encuentra el error, podr铆a verse as铆:

    npm ERR! Error: EACCES, open '/Users/scott/.npm/-/all/.cache.json'
    npm ERR!  { [Error: EACCES, open '/Users/scott/.npm/-/all/.cache.json']
    npm ERR!   errno: 3,
    npm ERR!   code: 'EACCES',
    npm ERR!   path: '/Users/scott/.npm/-/all/.cache.json' }
    npm ERR! 
    npm ERR! Please try running this command again as root/Administrator.
    
    npm ERR! System Darwin 15.5.0
    npm ERR! command "node" "/usr/local/bin/npm" "search" "babel"
    npm ERR! cwd /Users/scott
    npm ERR! node -v v0.10.4
    npm ERR! npm -v 1.2.18
    npm ERR! path /Users/scott/.npm/-/all/.cache.json
    npm ERR! code EACCES
    npm ERR! errno 3
    npm ERR! stack Error: EACCES, open '/Users/scott/.npm/-/all/.cache.json'
    npm ERR! 
    npm ERR! Additional logging details can be found in:
    npm ERR!     /Users/scott/npm-debug.log
    npm ERR! not ok code 0
    

    B谩sicamente, cada vez que intenta instalar o buscar algo a trav茅s de NPM, obtiene una larga lista de errores in煤tiles y el comando que est谩 intentando ejecutar falla. Sin embargo, cuando lo intentas con “sudo”, obtienes el resultado deseado. Esto suceder谩 incluso si ha iniciado sesi贸n como administrador. Este problema normalmente ocurre cuando hay alg煤n problema con los permisos y privilegios relacionados con la instalaci贸n de NPM.

    驴Instal贸 NPM usando privilegios de root? 脡sta puede ser una de las razones por las que necesita privilegios de root cada vez que ejecuta un comando. O esto tambi茅n podr铆a deberse a problemas de permisos dentro de su directorio de inicio, en cuyo caso tendr谩 que recuperar la propiedad, que es una de las soluciones que enumero a continuaci贸n.

    Soluci贸n 1: instalar a trav茅s de NVM

    “Todo est谩 seguro con permisos de root” no es un clich茅 y por una buena raz贸n. Cuando instala y ejecuta node en una m谩quina de desarrollo con privilegios de root, no lo morder谩 hasta que intente instalar otros paquetes con 茅l y enfrente el problema en discusi贸n.

    Node Version Manager, o NVM, es una herramienta que permite a los desarrolladores instalar tantas versiones de Node como necesiten y sin necesidad de privilegios de root. Recomiendo usarlo y realizar una reinstalaci贸n despu茅s de desinstalar la instalaci贸n actual de NPM. Si esta es la ruta que desea tomar, siga estos pasos:

    • Encienda una terminal e ingrese el siguiente comando para eliminar todos los m贸dulos de node globales:
       $ npm ls -gp --depth=0 | awk -F/ '/node_modules/ && !//npm$/ {print $NF}' | xargs npm -g rm
      
    • Ve a la repositorio git oficial de NVM y siga las instrucciones all铆 para instalar NVM. Para asegurarse de que NVM se haya instalado correctamente, ingrese el comando a continuaci贸n y vea si el resultado es un n煤mero de versi贸n:
       $ nvm --version
       0.28.0
      

      Si se envi贸 “nvm” a la consola, como se muestra arriba, entonces se ha instalado.

    • Una vez que se haya asegurado de que NVM se haya instalado en su dispositivo, ejecute este comando para instalar el node:
       $ nvm install stable
      

    Una vez que haya terminado, intente ejecutar npm link o realice una instalaci贸n global de NPM y ver谩 que ya no necesita privilegios de root para que funcione.

    Soluci贸n 2: tomar posesi贸n

    Como mencion茅 anteriormente, la mayor parte del tiempo este problema es causado por problemas en los permisos de su directorio de inicio. Si tiene dudas de que este no sea su caso, no se preocupe, puede intentarlo de todos modos porque incluso si no es la causa, no le har谩 ning煤n da帽o.

    Una vez que est茅 configurado, encienda la terminal e ingrese el siguiente comando:

    $ sudo chown -R $(whoami) ~/.npm
    

    los $(whoami) parte tomar谩 su nombre de usuario y lo colocar谩 all铆 dentro del comando, lo que lo convertir谩 en el propietario de todos los archivos / carpetas en ~/.npm.

    Cuando se le solicite que proporcione su contrase帽a, contin煤e. Una vez que haya terminado, intente instalar o buscar a trav茅s de NPM nuevamente y vea si el problema persiste; no deber铆a.

    Soluci贸n 3: desinstale todos los m贸dulos NPM y vuelva a instalarlo globalmente con privilegios de root

    Si es un usuario de Linux o OSX, tambi茅n puede crear un directorio dedicado para contener su paquete global. Luego, puede configurar NPM y el node para encontrar los paquetes instalados globalmente por su cuenta. Para realizar una instalaci贸n global para un usuario espec铆fico (sin privilegios de root), siga estos pasos:

    • Como primer paso, cree un directorio para los paquetes globales:
       $ mkdir "${HOME}/.npm-packages"
      
    • Vaya al archivo “~ / .npmrc” y agregue esto al final:
       prefix=${HOME}/.npm-packages
      
    • Vaya a sus archivos “.bashrc” o “.zshrc” y agregue:
       NPM_PACKAGES="${HOME}/.npm-packages"
       PATH="$NPM_PACKAGES/bin:$PATH"
      
       # Unset manpath so we can inherit from /etc/manpath via the `manpath` command
       unset MANPATH # delete if you already modified MANPATH elsewhere in your config
      
       export MANPATH="$NPM_PACKAGES/share/man:$(manpath)"
      

    Esto garantizar谩 que NPM encuentre f谩cilmente las p谩ginas de manual y los binarios instalados.

    Nota: Para los usuarios de Mac, el archivo “.bashrc” a menudo no existe y el terminal obtiene sus par谩metros de otros archivos como los archivos “.profile” o “bash_profile”. En tal escenario, agregue la siguiente l铆nea al final de cualquiera de los archivos mencionados anteriormente para asegurarse de que el terminal tambi茅n incluya el archivo “.bashrc”:

    $ source ~/.bashrc
    

    Si no desea realizar manualmente los pasos anteriores, puede consultar el agradable script de shell npm-g_nosudo, que realiza todos estos pasos autom谩ticamente.

    Conclusi贸n

    Estoy seguro de que despu茅s de probar una de las soluciones anteriores, ya no deber铆a tener problemas con este error. Si tiene una opci贸n, le recomiendo usar NVM para instalar diferentes versiones de Node / NPM. No solo resolver谩 su problema con el uso de NPM con sudo, sino que tambi茅n le permitir谩 instalar y cambiar f谩cilmente entre m煤ltiples versiones de Node / NPM mientras desarrolla. Ha sido un salvavidas para m铆, por decir lo menos.

    隆Cu茅ntanos en los comentarios c贸mo te fueron las cosas!

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *