Nvm-windows: No se puede actualizar npm (nodo 8.4.0)

Creado en 7 sept. 2017  ·  127Comentarios  ·  Fuente: coreybutler/nvm-windows

Si esta es una pregunta sobre cómo usar NVM4W, use stackoverflow en su lugar.

Si se trata de un problema relacionado con el antivirus, asegúrese de buscar primero los problemas existentes.

Mi entorno

  • [] Windows 7 o inferior (no es realmente compatible debido a EOL; consulte la wiki para obtener más detalles)
  • [] Windows 8
  • [] Windows 8.1
  • [x] Windows 10
  • [] Windows 10 IoT Core
  • [] Windows Server 2012
  • [] Windows Server 2012 R2
  • [] Windows Server 2016

  • [] Mi instalación de Windows no está en inglés.

Estoy usando la versión NVM4W:

  • [] 1.1.6
  • [x] 1.1.5
  • [] 1.1.4
  • [] 1.1.3
  • [] 1.1.2
  • [] 1.1.1
  • [ ] Mayor
  • [ ] Otros (especificar)

Ya tengo...

  • [x] lea el archivo README para estar al tanto de errores de npm y problemas de antivirus.
  • [] revisó la wiki para asegurarse de que mi problema aún no se haya resuelto.
  • [x] verificado Estoy usando una cuenta con privilegios administrativos.
  • [x] buscó los problemas (abiertos y cerrados) para asegurarse de que no sea un duplicado.
  • [] se aseguró de que esta no sea una pregunta sobre cómo usar NVM para Windows, ya que gitter se usa para preguntas y comentarios.

Mi problema está relacionado con (marque solo los que correspondan):

  • [] settings.txt
  • [] soporte de proxy (¿ha probado la versión 1.1.0+?)
  • [] Soporte de 32 o 64 bits (¿Ha probado la versión 1.1.3+?)
  • [] Carácter que se escapa (¿ha probado la versión 1.1.6+?)
  • [x] Un entorno de shell estándar (terminal / powershell)
  • [] Un entorno de shell no estándar (Cmder, Hyper, Cygwin, git)

Comportamiento esperado

npm i -g npm @ latest debería instalar la última versión de npm

Comportamiento real

un error:
npm ERR! path C:\Program Files\nodejs\npm.cmd npm ERR! code EEXIST npm ERR! Refusing to delete C:\Program Files\nodejs\npm.cmd: is outside C:\Program Files\nodejs\node_modules\npm and not a link npm ERR! File exists: C:\Program Files\nodejs\npm.cmd npm ERR! Move it away, and try again.

Pasos para reproducir el problema:

ejecutar como administrador npm i -g npm@latest

help wanted

Comentario más útil

Simplemente elimino los archivos npm y npm.cmd de la ubicación de nodejs, muevo dir node_modules/npm de la ubicación de nodejs a otra ubicación y ejecuto node npm-cli.js i -g npm@latest dentro de bin dir en la carpeta movida.

Todos 127 comentarios

El mismo problema aqui.

Tuve el mismo problema, y ​​así es como lo superé:

ejecuta npm install -g npm y mientras se ejecuta :
eliminar archivos (copia de seguridad) npm.cmd y npm de c:\Program Files\nodejs\
eliminar (copia de seguridad) .bin carpeta de c:\Program Files\nodejs\node_modules\npm\node_modules , entonces debería tener éxito
Si tiene Refusing to delete problemas con cualquier otro módulo npm files/folders , simplemente debe eliminarlos y reiniciar el proceso de actualización. Para reiniciar, copie npm.cmd nuevo a c:\Program Files\nodejs\ . Luego, una vez que se esté ejecutando npm install -g npm , elimine npm.cmd ; de lo contrario, ingresará al problema Refusing to delete npm.cmd , puede repetir ese proceso hasta que npm install -g npm esté satisfecho.

Para eliminar los archivos, puede usar este atajo: mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\node_modules" como lo sugiere @farnetani

mi env:
windows 7 x64, node 8.4, nvm 1.1.6

image

Viendo el mismo problema

sí mismos
ventanas 10
nodo 8.5.0
sobre el nivel del mar 5.3.0
nvm 1.1.0

@kuncevic
La solución más fácil es copiar dir node_modules/npm de la ubicación de nodejs, eliminar el npm bin y cmd, y ejecutar node npm-cli.js i -g npm@latest dentro de bin dir en la carpeta copiada.

Demasiado para la producción. Buena suerte haciendo un guión.

Deberían cambiar el nombre de la integración continua a la inter-ruptura continua

@ 19majkel94 No pude hacer que funcione con su método ... ¿alguna otra idea que pueda escribir?

Parece que npm ha cambiado la forma en que se actualiza ... sin decírselo a nadie. npx también se introdujo con solo un cambio de versión menor (a diferencia de un cambio importante) ... que es _semánticamente_ correcto, pero aún es difícil de seguir.

Aparentemente, se está produciendo una zona de pruebas de archivos. Pasé la mayor parte del día investigando e intentando una solución, pero cada solución muestra otro problema. Tenga paciencia conmigo, lo arreglaré tan pronto como pueda. Soy el único que trabaja en esto en este momento ... y resulta que estoy en medio del lanzamiento de un producto diferente (después de 2 años de trabajo), por lo que un PR sería aceptado con gusto.

Me gustaría poder ayudar, pero tengo una observación ... Creo que los problemas están relacionados con el acceso directo a " C:/Program Files/nodejs ". ¿Quizás si se usara un cruce en lugar de un atajo? Windows no puede diferenciar entre un directorio "real" y una unión. Por lo tanto, parecería que el nodo estaba realmente instalado en el directorio predeterminado. No más 'operar' en un directorio fuera del directorio resuelto.

https://docs.microsoft.com/en-us/sysinternals/downloads/junction

Por cierto, el uso de una unión debería preparar a nvm4w en el futuro contra cualquier cambio futuro en el comportamiento de npm.

@ wayne-oscme
¿Has leído el archivo Léame?

La segunda opción es utilizar un enlace simbólico. Este concepto requiere poner el enlace simbólico en la RUTA del sistema y luego actualizar su destino al directorio de instalación del nodo que desea utilizar. Este es un enfoque sencillo, y parece ser lo que la gente recomienda ... hasta que se dan cuenta de lo molestos que son los enlaces simbólicos en Windows. Por eso no ha sucedido antes.

Para crear / modificar un enlace simbólico, debe ejecutarse como administrador y debe sortear Windows UAC (ese molesto mensaje). Afortunadamente, este es un desafío que ya resolví con algunos scripts auxiliares en node-windows. Como resultado, NVM para Windows mantiene un único enlace simbólico que se coloca en la RUTA del sistema solo durante la instalación. Cambiar a diferentes versiones del nodo es cuestión de cambiar el destino del enlace simbólico. Como resultado, esta utilidad no requiere que ejecute nvm use xxx cada vez que abra una ventana de consola. Cuando ejecuta nvm use xxx, la versión activa del nodo se actualiza automáticamente en todas las ventanas de consola abiertas. También persiste entre los reinicios del sistema, por lo que solo necesita usar nvm cuando desee hacer un cambio.

@ 19majkel94
Lea acerca de los cruces. El 'enlace simbólico', también conocido como acceso directo de la ventana, tiene problemas para volver a resolver el directorio de destino desde los procesos. Si bien el explorador y la terminal de Windows parecen manejarlos bien, no se manejan bien en otros procesos. Abra el bloc de notas, elija abrir archivo para obtener el diálogo de archivo de la ventana estándar. Navegue hasta "C:/Program Files/nodejs" y vea dónde termina.

Ser una redirección al directorio de destino, que como vemos es donde terminan los procesos, puede dar lugar a algunos problemas interesantes.

Las uniones son el equivalente de enlaces duros en * nix. Windows solo los admite en directorios y no en archivos, pero eso es todo lo que necesitamos aquí. No son redireccionamientos. Son, para todos los efectos, el directorio, no diferente de la ruta creada cuando se creó el directorio por primera vez.

No redireccionan, son el destino. Se pueden eliminar y volver a crear con cada comando de "uso". Por lo tanto, tendrán los mismos efectos y capacidades que los atajos, pero ninguno de los inconvenientes que están creando el problema actual.

Esto no tiene nada que ver con uniones / enlaces físicos / enlaces simbólicos. @kuncevic proporcionó una captura de pantalla citando errores npm, siendo la parte clave Refusing to delete ... which is outside of .... . Ese es un mensaje codificado en npm, que evita operaciones posteriores. En pocas palabras: npm se niega a actualizarse por completo.

Esto no pareció ser un problema hasta npm 5.xx, y todavía estoy investigando los detalles para averiguar qué ha cambiado. Puede que tenga que escribir una solución alternativa (es decir, piratear), que nunca me gusta. También estoy buscando utilizar los paquetes msi, que parece ser la única forma de llamar la atención de la gente en npm.

Si necesita urgentemente actualizar npm, puede descargarlo a través de https://github.com/npm/npm/archive/vX.X.X.zip y extraerlo en el directorio node_modules de la raíz de instalación de su nodo. Deberá crear manualmente un enlace simbólico en la raíz de instalación de _nodo_ a npm.cmd y npx.cmd . La estructura final del archivo debería verse así:

nvm
- v8.5.0
   - node_modules
       - npm
          - bin
               - npm.cmd
               - npx.cmd
          ...
   - node.exe
   - npm.cmd (symlink to v8.5.0/node_modules/npm/bin/npm.cmd)
   - npx.cmd (symlink to v8.5.0/node_modules/npm/bin/npx.cmd)

Bien, supongo que debería intentarlo antes de vender. Reemplacé el atajo con un
junction, y obtuve exactamente el mismo problema. Pensé que tenía algo allí.
Perdón por hacerte perder tiempo.

El miércoles 27 de septiembre de 2017 a las 9:38 a.m., Corey Butler [email protected]
escribió:

Esto no tiene nada que ver con uniones / enlaces físicos / enlaces simbólicos. @kuncevic
https://github.com/kuncevic proporcionó una captura de pantalla que cita errores npm,
la parte clave es Negarse a eliminar ... que está fuera de ..... Eso
es un mensaje codificado en npm, que evita operaciones posteriores. Línea de fondo:
npm se niega a actualizarse por completo.

Esto no pareció ser un problema hasta npm 5.xx, y todavía estoy investigando
a través de los detalles para averiguar qué ha cambiado. Puede que tenga que escribir un
solución alternativa (es decir, piratear), que nunca me gusta. También estoy investigando
utilizando los paquetes msi, que parece ser la única forma de obtener el
atención de la gente en npm.

Si necesita urgentemente actualizar npm, puede descargarlo a través de
https://github.com/npm/npm/archive/vX.XXzip y extraerlo en el
directorio node_modules de la raíz de instalación de su nodo. Necesitarás
cree manualmente un enlace simbólico en la raíz de instalación del
npx.cmd. La estructura final del archivo debería verse así:

nvm

  • v8.5.0

    • node_modules



      • npm





        • compartimiento







          • npm.cmd




          • npx.cmd




            ...










    • node.exe

    • npm.cmd (enlace simbólico a v8.5.0 / node_modules / npm / bin / npm.cmd)

    • npx.cmd (enlace simbólico a v8.5.0 / node_modules / npm / bin / npx.cmd)

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-332523342 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AEZgRbY_GVys0bfnD_kaM_PYl6QUmZKDks5smk_PgaJpZM4PPcf-
.

Recientemente actualizado 5.4.1 → 5.4.2 sin problemas.

c:\>npm install npm -g
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
C:\Program Files\nodejs\npm -> C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
+ [email protected]
removed 1 package and updated 2 packages in 12.125s

@kuncevic - gracias ... eso es indicativo de que el problema debe estar dentro de npm 5.4.3+.

npm -g install [email protected] todavía me falla, los mismos errores.
[Editar] Por cierto, eso es a partir de 5.3.0, que se instaló con nvm install 8.5.0

El viernes 29 de septiembre de 2017 a las 11:41 a. M., Corey Butler [email protected]
escribió:

@kuncevic https://github.com/kuncevic - gracias ... eso es indicativo de
El problema debe estar dentro de npm 5.4.3+.

-
Estás recibiendo esto porque te mencionaron.
Responda a este correo electrónico directamente, véalo en GitHub
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-333161774 ,
o silenciar el hilo
https://github.com/notifications/unsubscribe-auth/AEZgRQnw_jxuz_dDZl3OsZVO_MNkHlBGks5snQ-qgaJpZM4PPcf-
.

Para mí, falla desde el Nodo 8.4.0 en adelante. Instala NPM 5.3.0 y luego no me permite actualizarlo.
Las versiones anteriores de Node (tengo 4.8.4) permiten que NPM se actualice normalmente.

Hombre. npm 5 y nvm realmente apestan (pero culpo a npm 5 aquí ya que 4 funciona perfectamente bien). Bajé la calificación a npm 4.6.1 la semana pasada y solo intenté darle a 5.4.2 otra oportunidad. Parece que npm se ha desinstalado al intentar instalar react-native-cli, un paquete completamente diferente:

Manuel@Manuel-406 /cygdrive/d/htdocs/wallet
$ npm install -g react-native-cli
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm WARN Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN  { Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN   stack: 'Error: EPERM: operation not permitted, scandir \'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules\'',
npm WARN   errno: -4048,
npm WARN   code: 'EPERM',
npm WARN   syscall: 'scandir',
npm WARN   path: 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules' }
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack: 'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm',
npm ERR!   parent: 'v8.5.0' }
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!     C:\Users\Manuel\AppData\Roaming\npm-cache\_logs\2017-10-02T14_54_04_833Z-debug.log

Manuel@Manuel-406 /cygdrive/d/htdocs/_git/wallet
$ npm install -g react-native-cli
sh: npm: Kommando nicht gefunden.
  • ubuntu : 16.04.2 LTS
  • nodejs : 8.6.0
  • npm : 5.3.0
npm i -g npm<strong i="15">@latest</strong>

/home/user/.npm-global/bin/npm -> /home/user/.npm-global/lib/node_modules/npm/bin/npm-cli.js
/home/user/.npm-global/bin/npx -> /home/user/.npm-global/lib/node_modules/npm/bin/npx-cli.js
+ [email protected]
added 68 packages, removed 164 packages and updated 14 packages in 14.307s

npm -v todavía imprime 5.3.0 y no está actualizado?

@yavorski : esto es nvm para Windows. Creo que quieres nvm para * nix .

He confirmado que este problema está en la zona de pruebas dentro de npm 5.xx Las ediciones anteriores de npm no tenían esto. Desafortunadamente, la solución no es trivial y, a juzgar por la experiencia de @yavorski , no es específica de este proyecto.

Sí, no nvm en mi caso. Linux + Nodejs de nodesource.

Tener el mismo problema aquí ...

npm versión 5.4.2
nodo versión 8.7.0
ventana 10

Tengo el mismo problema.

Windows 10
mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\"

y después

npm i -g npm@latest

¡Resuelto para mí!

Tengo un comportamiento similar con Node v8.9.0. Viene con npm 5.5.1, y cuando trato de degradar a npm 4, me da el error refusing to delete .

Traté de arreglar esto manualmente, extrayendo npm del archivo zip oficial, y obtuve este error:
image

Sospecho que este error está ocurriendo silenciosamente y corrompiendo la instalación. Cuando instalo en C:\nvm , no obtengo este error y todo funciona como se esperaba.

@RichardMisiak , ¿intentaste mover la instalación nvm a una ruta más cercana a C:\ ? ¿Como C:\nvm ? Me aclaró el problema.

Con el último nodo 9.1 que trae el último npm 5.5.1 por defecto, hay aún más "diversión" https://github.com/npm/npm/issues/19019 , diciendo con el próximo npm liberarlo podría ser arreglado.

Mi solución NO es muy elegante pero funciona. Aquí está.
Después de ejecutar npm install [email protected] -g recibí el siguiente error:

npm ERR! path d:\node\npm.cmd
npm ERR! code EEXIST
npm ERR! Refusing to delete d:\node\npm.cmd: is outside d:\node\node_modules\npm and not a link
npm ERR! File exists: d:\node\npm.cmd
npm ERR! Move it away, and try again.
...

Mi solución fue la siguiente:

  1. npm install -g yarn
  2. Reinicia la computadora
  3. Ejecute yarn global bin y agregue la carpeta que se muestra a la variable env PATH de Windows
  4. Vaya a la carpeta donde se encuentra npm.cmd (verifique esto desde el error que acabamos de recibir en la ejecución npm install [email protected] -g : d:\node\ en mi caso) y:
    2.1. Cambie el nombre de npm a npm.original (o simplemente elimínelo)
    2.1. Cambiar el nombre de npm.cmd a npm.cmd.original (o simplemente eliminarlo)
  5. Cierra la terminal y abre una nueva
  6. yarn global add [email protected]
  7. npm install [email protected] -g (esto instalará npm usando la versión npm ubicada en la carpeta yarn global bin )
  8. yarn global remove npm (para eliminar la versión npm instalada por yarn y mantener solo la versión instalada por npm)

Simplemente cambie el nombre del lote ANTES de actualizar:
ejecutar cmd

cd %ProgramFiles%\nodejs
ren npm.cmd npm2.cmd
ren npm npm2 
npm2 install npm<strong i="7">@latest</strong> -g

eliminar los archivos después de la actualización:

del npm2
del npm2.cmd

@ rolf-schmidiger En mi experiencia, tuve que hacer el mismo cambio de nombre con npx y npx.cmd que con npm y npm.cmd.

Deliciosamente simple y eficaz, @ rolf-schmidiger. Gracias.

@coreybutler , ¿alguna idea sobre una solución? Sólo curioso. Sin presión.

Ninguna de las soluciones enumeradas aquí funcionó para mí, y al final fue más rápido usar nvmw uninstall para eliminar la instalación del Nodo y luego nvmw install para reinstalarlo.

¿No es nvmw una herramienta completamente diferente?

@thegreatco ¡Ups! Tienes razón. Sin embargo, es interesante que el mismo problema ocurra en ambos.

Basado en la respuesta de @ rolf-schmidiger, creé un script de actualización para él ... Un poco apesta que esta sea la única forma en que puedo hacer que funcione.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
mv npm.cmd npm2.cmd
mv npm npm2
npm2 install -g npm<strong i="6">@latest</strong>
rm npm2
rm npm2.cmd

ACTUALIZAR

Esta es la última que me está funcionando.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
rm npm npx npm.cmd npx.cmd
mv node_modules/npm node_modules/npm2
node node_modules/npm2/bin/npm-cli.js i -g npm<strong i="12">@latest</strong>
rm -rf node_modules/npm2/

Acabo de instalar todo por primera vez, por lo que ninguna de las sugerencias anteriores parece aplicarse a mí. Sigo recibiendo esto cuando intento ejecutar npx create-react-app :

npx : The term 'npx' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.

Windows 10 Pro, compilación 1703, reinstalación nueva hace aproximadamente 2 semanas con el modo de desarrollador habilitado
Nodo versión 9.4.0
npm 5.6.0

Las instrucciones de instalación eran un poco confusas (hay varios archivos para descargar, ¿para qué sirve ese archivo sin instalación?), Pero finalmente descubrí que tienes que activar nvm y luego emitir el comando de uso, (confundido yo porque no estoy usando un administrador de paquetes separado, así que pensé que esa parte no se aplicaba), pero sigo recibiendo el error anterior.

Intenté todo lo posible. Desinstalé nvm e instalé una versión diferente, verifiqué la ruta del entorno, me quedé sin ideas. Finalmente acabo de hacer npm install -g npx y parece estar funcionando. Atornillarlo.

Simplemente elimino los archivos npm y npm.cmd de la ubicación de nodejs, muevo dir node_modules/npm de la ubicación de nodejs a otra ubicación y ejecuto node npm-cli.js i -g npm@latest dentro de bin dir en la carpeta movida.

Tengo el mismo problema (entorno de Windows 10) al intentar actualizar mi nodo 8.8.0 con npm 5.5.1 al nodo 9.8.0, pero la instalación del nodo 9.8.0 no actualiza mi npm de 5.5.1 a la última. Después de eso, intento npm i -g npm y obtengo el error:

C:\Repository\myproject>npm i -g npm
npm WARN npm npm does not support Node.js v9.8.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8.
npm WARN npm You can find the latest version at https://nodejs.org/
WARNING: You are likely using a version of node-tar or npm that is incompatible with this version of Node.js.
Please use either the version of npm that is bundled with Node.js, or a version of npm (> 5.5.1 or < 5.4.0) or node-tar (> 4.0.1) that is compatible with Node.js 9 and above.
npm[19860]: src\node_zlib.cc:436: Assertion `args.Length() == 7 && "init(windowBits, level, memLevel, strategy, writeResult, writeCallback," " dictionary)"' failed.
 1: node::DecodeWrite
 2: node::DecodeWrite
 3: uv_loop_size
 4: v8::internal::wasm::SignatureMap::Find
 5: v8::internal::Builtins::CallableFor
 6: v8::internal::Builtins::CallableFor
 7: v8::internal::Builtins::CallableFor
 8: 000003BEBC8843C1

La solución de @arfaWong funcionó perfectamente para mí (mezclé un poco con la solución de @ rolf-schmidiger y cambié el nombre en lugar de moverme)

Es muy simple. Si está en Windows, consulte https://github.com/felixrieseberg/npm-windows-upgrade
Si desea hacerlo manualmente, consulte la documentación https://github.com/npm/npm/wiki/Troubleshooting#upgrading -on-windows

Reuní un script de PowerShell para automatizar la solución de @arfaWong : https://gist.github.com/noahleigh/ba34e18b3e0bc4a6a4e93ed7a480536e

Probado en PowerShell Core 6.0

Mismo problema con

node-v8.6.0-win-x64
node-v9.9.0-win-x64

y si cambia el nombre del archivo o lo mueve, fallará y no podrá crear la carpeta, vuelva a ejecutarlo como administrador. Aparte del hecho de que no tengo derechos de administrador en esta máquina, es dudoso que esto cambie algo, ya que el usuario actual tiene permisos mkdir en esa carpeta ...

¿Cuándo se arreglará eso?

@arfaWong rocas !!

Usé cmder , nvm 1.1.6 y nodo 8.10.0
Actualizado de npm 5.6.0 a 5.8.0: tada:

cd %programfiles%/nodejs
rm npm npm.cmd
mv node_modules/npm node_modules/npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="17">@latest</strong> -g
rm -rf npm2

gracias por tu solución @ayvarot
Usé nvm 1.1.15 y nodo 9.8.0
Actualizado de 5.6.0 a 5.8.0

La solución de @ayvarot funcionó parcialmente para mí. ¿Quizás debido al hecho de que lo estaba ejecutando en un msys git bash con ConEmu? De todos modos, este es mi fragmento ajustado:

which npm && \
    cd "`which npm | xargs -0 dirname`" && \
    mv npm npm2 && \
    mv npm.cmd npm2.cmd && \
    mv ./node_modules/npm ./node_modules/npm2 && \
    node node_modules/npm2/bin/npm-cli.js i npm<strong i="7">@latest</strong> -g && \
    rm -r npm2 npm2.cmd ./node_modules/npm2

npm -v

(Usando nvm 1.1.6 en el nodo 8.10.0 x32 y actualizando de npm 5.6.0 a 5.8.0)

@arfaWong Eso funcionó ... Aunque no es el ideal ...
Esperaré a que el equipo de npm lo solucione ...
.
Enfrenté esto con npm 5.6.0

Una versión simple de Windows DOS de @ayvarot

pushd %ProgramFiles%\nodejs
del npm npm.cmd
move node_modules\npm node_modules\npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="8">@latest</strong> -g
rd node_modules\npm2 /S /Q
popd

La solución maravilla , ¡gracias!

Windows 10:
cd (su carpeta nodejs)
ren npm.cmd npm2.cmd
del npm
del npx

npm2 instalar npm -g

del npm2.cmd

Simplemente cambié el nombre de npm y npx por cierto, y luego los eliminé, pero creo que podrían eliminarse de inmediato.

Esto parece ahora desencadenado por la instalación de Nodejs versión 10.0.0 usando nvm.

@arfaWong La única solución que funcionó chicos. Probar esto.

¡@ rolf-schmidiger funcionó para mí! gracias

Lo solucioné utilizando Yarn, que ya había instalado.

nvm use 10.0.0

# Have npm remove itself
npm uninstall -g npm

# Install npm into the yarn directory structure
yarn global add npm

# Use npm to install itself into the nodejs directory structure
npm install -g npm

# Remove the yarn installation of npm
yarn global remove npm

Esto funcionó para mí:

nvm use <some_other_version>
cd .../nvm/<version_to_update>
npm un npm
npm i npm<strong i="6">@latest</strong>

use hilo en lugar de npm, intente yarn global add npm@latest , intente actualizar hilo si esto falla.

También recibí el error Negarse a eliminar al intentar actualizar npm usando npm install npm<strong i="6">@latest</strong> --global .

El paquete npm-windows-upgrade tampoco pudo actualizarse, lo que sugiere reinstalar Node.js, a pesar de que se trata de una instalación nueva para descomprimir.

Pude actualizar moviendo los archivos npm y npx, como se sugirió anteriormente, usando este script de PowerShell:

# Locate the Node.js installation
# containing the npm and npx files that are preventing the upgrade
Get-Command node.exe | % { Split-Path $_.Source } | cd

$CurrentNpmVersion = npm --version

# Version the current npm scripts to make room for the new version:
"npm", "npm.cmd", "npx", "npx.cmd" | %{ Get-ChildItem -Filter $_ } |
  Rename-Item -NewName { "$($_.BaseName)-$CurrentNpmVersion$($_.Extension)" }

# Use the current npm command to install the new version:
Invoke-Expression "npm-$($CurrentNpmVersion).cmd install npm<strong i="11">@latest</strong> --global"

Hola @awarberg Probé tu script pero me sale este error. Probé con hilo también, sin suerte ... ¡estúpido Windows! 💢

.\update_node.ps1
npm ERR! path C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! code EEXIST
npm ERR! Refusing to delete C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno: is outside C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\errno and not a link
npm ERR! File exists: C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! Move it away, and try again.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\vitom\AppData\Roaming\npm-cache\_logs\2018-05-11T12_55_55_902Z-debug.log

@lamuertepeluda siento escuchar que aún no puedes actualizar. El archivo mencionado ...\node_modules\.bin\errno no se mencionó anteriormente. Esto podría ser una instalación dañada debido a múltiples intentos de actualización. Puede ser un buen momento para reinstalarlo, como sugiere npm-windows-upgrade.

En cuanto a "Windows estúpido", no estoy de acuerdo. Lo más probable es que NPM fue diseñado para Linux primero, y el soporte de Windows se incorporó más tarde, como un pensamiento posterior. También veo esto regularmente en otros paquetes de NPM. Los problemas típicos son la dificultad de instalar y requieren pasos manuales e indocumentados para garantizar los requisitos previos del software. Otro problema común son las rutas del sistema de archivos que distinguen entre mayúsculas y minúsculas.

Hice un script por lotes para ejecutar automáticamente la solución de @arfaWong si alguien está interesado.

<strong i="7">@echo</strong> off
SETLOCAL EnableDelayedExpansion

if [%1] == [] (
    echo Pass in the version you would like to install, or "latest" to install the latest npm version.
) else (
    set wanted_version=%1

    if "!wanted_version!" == "latest" (
        for /f %%i in ('npm show npm version') do set wanted_version=%%i
    )

    for /f %%i in ('npm -g -v') do set cur_version=%%i

    if "!cur_version!" == "!wanted_version!" (
        echo Already on npm version !wanted_version!.
    ) else (
        echo Updating to !wanted_version!...

        set node_path=!PROGRAMFILES!\nodejs

        rename "!node_path!\npm" npm2
        rename "!node_path!\npm.cmd" npm2.cmd
        rename "!node_path!\node_modules\npm" npm2
        node "!node_path!\node_modules\npm2\bin\npm-cli.js" i npm@!wanted_version! -g

        for /f %%i in ('npm -g -v') do set new_version=%%i

        echo New version installed is !new_version!

        if "!new_version!" == "!wanted_version!" (
            echo Successfully updated to !wanted_version!. Cleaning up backups...
            del "!node_path!\npm2"
            del "!node_path!\npm2.cmd"
            <strong i="8">@RD</strong> /S /Q "!node_path!\node_modules\npm2"
            echo Update complete.
        ) else (
            echo Something went wrong. Rolling back.
            if exist "!node_path!\npm" (
                del "!node_path!\npm"
            )
            if exist "!node_path!\npm.cmd" (
                del "!node_path!\npm.cmd"
            )
            if exist "!node_path!\node_modules\npm" (
                <strong i="9">@RD</strong> /S /Q "!node_path!\node_modules\npm"
            )
            rename "!node_path!\npm2" npm
            rename "!node_path!\npm2.cmd" npm.cmd
            rename "!node_path!\node_modules\npm2" npm
        )
    )
)

Creé una esencia del @kufii . Ligeramente modificado para que pueda especificar la versión a instalar en lugar de instalar siempre lastet.

https://gist.github.com/johnmcase/d31b799b9030327091a0e74880e4c530

--Editar: actualizado para reflejar el script actualizado de

@johnmcase buena idea, actualicé mi comentario para que pueda pasar la versión que desea instalar como argumento (o "última" para obtener la última versión)

La versión actualizada de @kufii funciona mejor para mí que tener el número deseado codificado en el script.

@kufii @arfaWong

¡¡Gracias!!
notworthy

A @johnmcase Worked le gustó un encanto, los marcadores.

Solo se encontró un problema con este script: cuando seleccioné instalar 5.6 , instaló correctamente 5.6.0 y se ha retrocedido ya que "5.6" difiere de "5.6.0" ...
¡Gracias por el guión!

Tuve el mismo problema nuevamente recientemente con nvm versión 1.1.7
La solución de @arfaWong y @ayvarot funcionó la última vez. Pero esta vez Idkw no se encontró la carpeta npm. Así que recomiendo no eliminar la carpeta npm2 por si acaso.

Pasé casi dos días depurando los errores causados ​​por este problema y probé casi todas las soluciones para actualizar mi NPM de 5.6.0 a 6.1.0. La solución de @arfaWong funcionó para mí sin más problemas. ¡Gracias!

@arfaWong funciona !!

Lo hice con el método del hilo, pero esto también debería funcionar:

  1. Obtenga npm de https://github.com/npm/cli/releases
  2. Ejecute lo siguiente desde el directorio al que lo extrajo desde su carpeta bin

    • node npm-cli.js i -g npm@latest

    • Puede quejarse de que los archivos deben eliminarse, para mí tenía mi nvm y nodejs en un directorio raíz en mi unidad, por lo que la ubicación estándar del archivo del programa no me es aplicable. Nuked los npm / npx / node_modules de mi carpeta nodejs (no tengo miedo de volver a descargar paquetes y estoy trabajando con una nueva instalación ahora de todos modos).

  3. ¡Debería instalarse correctamente y debería poder eliminar la carpeta que extrajo y beneficiarse!

Bastante similar a este stackoverflow que escribí.
https://stackoverflow.com/questions/49748307/how-to-reinstall-npm

@ayvarot Muchas gracias !!!!!!!! Tus consejos funcionan para mí en Windows 10.

Funcionó para mí con solo cambiar el nombre de %Node%\npm.cmd , %Node%\npm y %Node%\npx.cmd , no fue necesario

La solución sugerida por @peternann aquí también funciona.
https://github.com/coreybutler/nvm-windows/issues/389

Por alguna razón, el script anterior no me funcionaba y simplemente estaba demasiado cansado de resolver esto como para averiguar por qué.

Este ridículo error aún persiste, así que hice un script que hace el trabajo. Debe colocarse dentro de la carpeta del nodo donde se encuentra npm.cmd .

:: Update NPM with workaround of "npm ERR! code EEXIST" bug https://github.com/coreybutler/nvm-windows/issues/300

<strong i="7">@ECHO</strong> OFF

SETLOCAL

SET CDir=%~dp0%

REN "%CDir%\npm.cmd" "npm1.cmd"
DEL "%CDir%\npm"
DEL "%CDir%\npx.cmd"
DEL "%CDir%\npx"

CALL "%CDir%\npm1.cmd" update && DEL "%CDir%\npm1.cmd"

Guárdelo como npmup.cmd y úselo en lugar de npm update

al usar el script de @kufii
Tenga en cuenta que la ubicación de instalación debe reemplazarse si cambió la ruta de node.js como yo, simplemente reemplace el código set node_path=!PROGRAMFILES!\nodejs por set node_path=YOUR_NODE_PATH

La solución @kraihn no funciona ahora con el último hilo a menos que agregue un contenedor de hilo a la ruta:

  1. obtener el contenedor path por yarn global bin
  2. pegue el contenedor de hilo path en su variable path

Una vez al año me emociono, decido instalar NVM en Windows pensando "esta vez funcionará", pero siempre hay algo roto ... Bueno, supongo que ha vuelto al instalador clásico de Node.js. Usaría WSL, pero desafortunadamente algunas aplicaciones de Electron requieren que tengas Node instalado en el sistema operativo host.

¿Es esto realmente irreparable solo por NVM?
Por lo que he leído en diferentes hilos, también sería un problema de npm o Node, pero ¿no hay nada que NVM por sí solo pueda hacer al respecto? De lo contrario, este problema hace que NVM sea inútil en Windows.
Tener que eliminar archivos nosotros mismos mientras estamos en medio del proceso de actualización o incluso crear scripts para eso o cualquier solución alternativa mencionada por algunas personas, no es una solución. ¡Es el infierno!
Lo único que probé (un comentario en otro hilo, no en este, mencionando algunos pasos sobre cómo usar hilo para agregar npm) no funcionó.

@MrCroft aunque estoy de acuerdo en que sería bueno que "simplemente funcione", las cosas están lejos del "infierno" y aún más de ser "inútiles".
He sido un usuario feliz de este proyecto durante unos 2 años.
Este problema solo ocurre cuando desea actualizar el npm global. La instalación de nuevas versiones de nodos a través de nvm no tiene ningún problema y los nuevos nodos vienen con paquetes npm más nuevos.
Si se encuentra actualizando npm con tanta frecuencia en su entorno de desarrollo que su vida se vuelve un infierno debido a esto, entonces probablemente esté haciendo algo mal.
Creo que solo dos veces desde que me convertí en usuario de nvm tuve que actualizar npm y solucionar este problema. No es tan malo como lo dices.

Aquí está mi script para actualizar npm en nvm:

https://stackoverflow.com/a/50955293/491553

Lo acabo de hacer en una nueva instalación. Funciona genial.

Tal vez alguien debería probar el actualizador npm SIN DERECHOS DE ADMINISTRACIÓN ...

Creo que esto es más un error de la versión npm anterior que nvm .

Sin embargo, para actualizar npm delete en la carpeta nvm/[node version] (para mí es v10.15.3 ) los siguientes archivos:

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm.cmd
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx.cmd

Cambiar el nombre de la carpeta npm a npm2

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2

Abra cualquier consola con derechos de administrador (o incluso haga clic con el botón derecho del mouse en el acceso directo de vscode, luego haga clic con el botón derecho en Visual Studio Code y presione Ejecutar como administrador ) y escriba los comandos:

cd C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2\bin
node npm-cli.js i -g npm<strong i="22">@latest</strong>

Actualización: como señaló @ Fr0sT-Brutal, los derechos de administrador no deberían ser necesarios en este punto, porque acabamos de eliminar los archivos que crearon conflictos 👍

Hecho.

Elimina la carpeta C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2 .

(Esto es solo reproducir paso a paso lo que @ 19majkel94 dijo arriba)

@createdbyjurand : SIN derechos de administrador ...
No necesita derechos de administrador para reemplazar un grupo de archivos con otro grupo de archivos ...
(siempre que tenga acceso de escritura a los archivos / directorios)

@createdbyjurand : SIN derechos de administrador ...
No necesita derechos de administrador para reemplazar un grupo de archivos con otro grupo de archivos ...
(siempre que tenga acceso de escritura a los archivos / directorios)

Lo sé. Pero, la carpeta Archivos de programa en Windows 10 tiene derechos de acceso específicos. Es por eso que muchas aplicaciones se instalan últimamente en carpetas Roaming o Local. Incluso Visual Studio Code tiene dos instalaciones independientes. Uno para local y otro para archivos de programa. Una forma de solucionar esto es cambiar la ubicación de la carpeta nvm nodejs. En segundo lugar, cambie las opciones de Seguridad de la carpeta, pero eso hace que esta carpeta no sea segura. Lo que escribí, lo que escribió @ 19majkel94 , es una solución para arreglar la actualización de npm tal como está, usando la instalación estándar de nvm con configuraciones predeterminadas para las personas que solo quieren solucionar el problema sin tener que hacer más y más cambios de sistema o configuración. Porque incluso si cambia la carpeta o los derechos de acceso, aún tiene que seguir todos los pasos que enumeré, y el único cambio será usar la consola sin derechos de administrador.

@createdbyjurand: Simplemente decir, corremos nodo en un entorno corporativo, y como desarrolladores, que no tienen derechos de administrador. Si una actualización de npm o un script en el mismo requiere derechos de administrador, eso rompe nuestro entorno de desarrollo, y luego no podemos instalar ningún paquete de nodo, y luego no podemos trabajar.

@createdbyjurand ¿para qué necesitas derechos de administrador?

@createdbyjurand ¿para qué necesitas derechos de administrador?

Buen punto, no lo hago, porque acabo de eliminar archivos que estaban creando conflictos 👍

Oh ya veo. Nunca imaginé tener NPM instalado en PF, para mí es bastante extraño. Yo diría que quienes lo hacen son la causa de sus problemas :).

Oh ya veo. Nunca imaginé tener NPM instalado en PF, para mí es bastante extraño. Yo diría que quienes lo hacen son la causa de sus problemas :).

Recientemente sí. Microsoft cambió los derechos de acceso a la carpeta Archivos de programa . Es por eso que una gran cantidad de software se está moviendo ahora hacia el directorio de instalación de carpeta local o itinerante . Y esta es la razón por la que no hace mucho tiempo todo funcionaba bien con npm, y ahora, de repente, obtenemos esto:

$ npm i -g npm<strong i="11">@latest</strong>
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { [Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm']
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack:
npm ERR!    'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\fehTH4RTH\AppData\Roaming\npm-cache\_logs\2019-03-22T14_28_26_153Z-debug.log

Oh ya veo. Nunca imaginé tener NPM instalado en PF, para mí es bastante extraño. Yo diría que quienes lo hacen son la causa de sus problemas :)

@ Fr0sT-Brutal bueno, por el bien de la organización, yo también lo hago. Si ya tengo una carpeta de sistema designada para aplicaciones (Archivos de programa), cada vez que instalo algo, lo instalo en la carpeta "Archivos de programa". Especialmente para no contaminar la carpeta raíz de la unidad con carpetas aleatorias como "nodejs" o "nvm" y tampoco para llegar a rutas largas, como "c: / Users / My Name / Roaming / ApplicationData / cualquiera", prefiero "c : / Archivos de programa / lo que sea ".
No obstante, aunque realmente me hubiera molestado trabajar así (tener nvm | node en un lugar fuera de los archivos de programa), aún así ... al menos lo intenté y lo instalé en c: / nvm (en cuanto a versiones de nodo, probé tanto c: / node como una subcarpeta de nvm: c: / nvm / node algo así). Pero el problema persistió, npm aún no se pudo actualizar ejecutando npm i -g npm . Gracias a Dios, porque no me gustaría vivir con cosas instaladas fuera de la carpeta Archivos de programa. Por supuesto, finalmente me di por vencido y sigo usando 1 versión de nodo en todo momento, instalado usando el instalador de nodo predeterminado para Windows de nodejs.org

@createdbyjurand recientemente? IIRC, PF se volvió restringido de escritura para un usuario desde XP.
@MrCroft Siempre me pregunté cómo la gente podría vivir con todas las cosas enterradas dentro de PF ... El espacio en la ruta significa que siempre se requieren citas, la locura con x64-PF y x32-PF agrega una iteración para la búsqueda y, lo más frustrante, una estructura de software totalmente plana. Tengo más de 100 aplicaciones incluso en la PC de casa y 50 aplicaciones incluso más en el trabajo. Saltaría por una ventana si tuviera que buscar aplicaciones dentro de PF.

No tienes que ponerlo en
C:/Users/My Name/Roaming/Whatever
puede utilizar cualquier directorio siempre que el usuario pueda escribirlo.

Tengo todos los programas en D: Programs, ninguno de ellos requiere derechos de administrador, incluidos nodejs, python, cmake, JetBrains, go, OpenOffice, etc.

Luego los puse todos en las variables de entorno de ruta y el registro para current_user.
Funciona de maravilla.
No se requieren instaladores de caja negra.

Si necesito encontrar algo, uso Locate32, ni siquiera examino las carpetas / Desktop / StartMenu.
Locate32 es mucho más rápido.
O los ejecuto a través de CTRL + R, ya que puede establecer los alias en el registro en HKCU.

La única razón para tener algo en C:\ProgramFiles es cuando desea instalar una determinada aplicación para cada usuario en la máquina, lo que, como desarrollador, en la mayoría de los casos, no desea, ya que tiene programas en la ruta / registro de todo el sistema. podría romper los programas de otros usuarios o inhibir su capacidad para usar una versión diferente a la versión que usted usa. Además, es útil en el servidor: el usuario1 puede usar sus nodejs, el usuario2 otros nodejs y no se muerde a sí mismo.

Al eliminar los derechos de administrador y mantener todo en el usuario, se asegura de que un usuario no pueda romper los programas y configuraciones de otro usuario. Además, se asegura de que sus aplicaciones se ejecuten sin derechos de administrador, que es algo que puede resultar útil en ocasiones. Y en el peor de los casos, siempre puede eliminar y purgar una cuenta de usuario y volver a escribirla más tarde.

De esa manera puedo ejecutar aproximadamente 1000 programas, todo sin un minuto dedicado a la instalación.
Incluso JetBrains IDE y PostgreSQL funcionan de esa manera.
Los únicos programas que no pude hacer funcionar así son MS-Office, SQL-Server y Visual-Studio.
npm no debe agregarse a esta lista de mala reputación, y todo porque no se puede molestar en mover algunos archivos existentes en lugar de sobrescribirlos.

De todos modos, ahora tengo mi propio script nodejs-update-script , que detecta la carpeta de nodos de la variable de entorno de ruta.

Acabo de cambiar el nombre de estos archivos a "1"
npm1.cmd, npm1, npx1, npx1.cmd

y corrió:
" npm1 update -g "

Parece que funcionó bien, ¿alguna idea?

tal vez esto se pueda integrar en nvm, tal vez agregando un indicador de versión npm junto con la versión del nodo y el indicador de arquitectura en la instalación, y una función update-nvm

Acabo de cambiar el nombre de estos archivos a "1"
npm1.cmd, npm1, npx1, npx1.cmd

y corrió:
" npm1 update -g "

Parece que funcionó bien, ¿alguna idea?

También funcionó para mí, pero tuve que eliminar la carpeta
nvmv10.15.3node_modulesnpmnode_modules.bin
porque todavía aparecía el error que apuntaba a esta carpeta.

¡Gracias!

Hola chicos, he creado un paquete para actualizar la versión local npm de Program Filesnodejs
Revisa
npm install -g npm-win-upgrade
npm-win-upgrade

No estoy seguro de si es compatible con NVM, pero usa process.execPath para ubicar la carpeta node.exe, por lo que debería hacerlo.

@dolpsdw Me sale el siguiente error al ejecutar npm-win-upgrade :

Npm instaled as Global package: uninstalling...                                                                     
(node:10192) UnhandledPromiseRejectionWarning: Error: Command failed: npm uninstall npm -g                          
npm ERR! path C:\Program Files\nodejs\npx.cmd                                                                       
npm ERR! code EEXIST                                                                                                
npm ERR! Refusing to delete C:\Program Files\nodejs\npx.cmd: is outside C:\Program Files\nodejs\node_modules\npm and
 not a link                                                                                                         
npm ERR! File exists: C:\Program Files\nodejs\npx.cmd                                                               
npm ERR! Move it away, and try again.                                                                               

npm ERR! A complete log of this run can be found in:                                                                
npm ERR!     C:\Users\sjodle\AppData\Roaming\npm-cache\_logs\2019-04-23T17_42_11_305Z-debug.log                     

    at ChildProcess.exithandler (child_process.js:281:12)                                                           
    at emitTwo (events.js:126:13)                                                                                   
    at ChildProcess.emit (events.js:214:7)                                                                          
    at maybeClose (internal/child_process.js:915:16)                                                                
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)                                        
(node:10192) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing
 inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (
rejection id: 1)                                                                                                    
(node:10192) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejec
tions that are not handled will terminate the Node.js process with a non-zero exit code.                            

Hola @sodle ,

El primer error (nodo: 10192 Comando falló: npm uninstall npm -g): ocurre porque npm se detectó como global instalado en la carpeta% appdata% npm, pero esto puede ser el resto de la caché de nodo anterior. Esto podría solucionarse con una detección npm list -g.

Acerca del segundo error para mí, ese error de 'Negarse a eliminar' ... parece que los privilegios de administrador no estaban autorizados en el proceso. (¿Se denegó la indicación de UAC?)

Intente ejecutar el script y acepte la escala de privilegios de administrador, y si eso no lo soluciona, dígame su versión de nodo de Origin para reproducir el error.

@dolpsdw Estoy bastante seguro de que ambos son parte del mismo error: npm se niega a eliminar el archivo porque está fuera de lugar o algo así.

En cualquier caso, ya no tengo la máquina en la que ocurrió el error. Le haré saber si encuentro los mismos problemas en su reemplazo.

Hola @rsshilli
gracias por proporcionar el guión. Funciona bastante bien y actualiza npm a la última versión según se desee.
El único problema menor que enfrenté fue que ejecutar npm list -g --depth=0 para listar todos los paquetes de nodos resultó en dos instalaciones de npm.
Así que simplemente agregué algunas líneas de código para eliminar los archivos renombrados "...- old" y la carpeta renombrada "...- old".
Ejecutar npm list -g --depth=0 para listar todos los paquetes de nodos resultó en una única instalación de npm como se desea.
Aquí está mi versión actualizada de su script:
cd %APPDATA%\nvm\v8.9.0 # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js install -g npm@latest

cd %APPDATA%\nvm\v8.9.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old

Aquí está mi script para actualizar npm en nvm:

https://stackoverflow.com/a/50955293/491553

Lo acabo de hacer en una nueva instalación. Funciona genial.

@dolpsdw npm-win-upgrade falló con los mismos errores que npm install -g npm .
Hay otro paquete npm-windows-upgrade , que también falla, pero no dice por qué (supongo que es lo mismo).

@ Markus-Hanisch @rsshilli Gracias por ese guión.

Tomando eso como punto de partida, me gustaría agregar el siguiente script de powershell generalizado, que le permite actualizar NPM independientemente de su versión actual de Nodo y ubicación de nvm:

Push-Location (Join-Path (Split-Path (Get-Command nvm).Path) (node --version))
  Move-Item npm npm-old
  Move-Item npm.cmd npm-old.cmd
  Move-Item npx.cmd npx-old.cmd
  Push-Location .\node_modules
    Move-Item npm npm-old
    Push-Location .\npm-old\bin
      node npm-cli.js install -g npm<strong i="8">@latest</strong>
    Pop-Location
    Remove-Item npm-old -Recurse
  Pop-Location
  Remove-Item npx-old.cmd
  Remove-Item npm-old.cmd
  Remove-Item npm-old -Recurse
Pop-Location

(la única suposición es que nvm almacena sus versiones junto con su archivo exe y las nombra de acuerdo con la salida de node --version )

Lea este hilo; al final, tuve la mejor suerte al desinstalar y reinstalar node.js usando programas de agregar / quitar.

El problema me estaba solucionando como hace un año al encender mac;)

@kuncevic

El problema me estaba solucionando como hace un año al encender mac;)

Corregido:
El problema estaba siendo evitado por mí como hace un año al encender mac;)
: rofl:

@kuncevic , @ Fr0sT-Brutal:
Y renunciando a su libertad de elección cuando se trata de hardware.
No es una buena compensación en absoluto.
Además, está renunciando a su control sobre el software que se ejecuta en su computadora.
Si necesita cambiarse a algún lugar, cámbiese a Linux; esa es la mejor opción, de todos modos para el servidor.

https://blog.npmjs.org/post/189618601100/binary-planting-with-the-npm-cli

Dejé nvm para windows. Después de 2 años, todavía no funciona correctamente incluso con la última versión de nodo

Amigos, este es un problema de npm, no un problema de NVM4W. Hay una utilidad para ayudar con esto, disponible en https://github.com/felixrieseberg/npm-windows-upgrade.

Acabo de cambiar el nombre de estos archivos a "1"
npm1.cmd, npm1, npx1, npx1.cmd

y corrió:
" npm1 update -g "

Simplemente cambie el nombre del archivo npm1.cmd , es suficiente. Luego ejecute la actualización npm .

No es necesario usar npm-windows-upgrade .

@coreybutler No estoy totalmente convencido de eso. npm-windows-upgrade no funcionó para mí. Luego, después de que borré manualmente los scripts de nivel superior (los mismos que otros están cambiando de nombre aquí, y también los de npx), node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm funcionó inicialmente y npm install -g npm funcionó para una actualización posterior sin intervención manual . Parece que la instalación inicial de npm está rota de alguna manera.

Incluso si de alguna manera es culpa de npm por tener un instalador roto o algo en lugar de nvm, un paso que nvm podría tomar para aliviar el problema es borrar estos scripts e invocar una actualización inmediatamente al crear el entorno de versión inicial. O al menos podría proporcionar una opción o comando para hacerlo.

@kuncevic Sugerencia para mejorar tus instrucciones:

En lugar de copiar archivos de un lado a otro o intentar moverlos lo suficientemente rápido mientras se ejecuta el proceso, simplemente invoque el script de npm directamente con el comando de nodo.

Potencia Shell:

node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm

Símbolo del sistema:

node "%NVM_SYMLINK%\node_modules\npm\lib\npm.js" install -g npm

Luego, puede eliminar los archivos una vez y reiniciar el proceso sin volver a colocarlos si es necesario.

@ bladeoflight16 Lo intenté pero obtuve este error.

C:\Users\woonk>node %NVM_SYMLINK%\node_modules\npm\lib\npm.js install -g npm
internal/modules/cjs/loader.js:796
    throw err;
    ^

Error: Cannot find module 'C:\Program'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:793:17)
    at Function.Module._load (internal/modules/cjs/loader.js:686:27)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

@ mattdamon108 Lo siento. Debe citar la ruta en cmd si tiene espacios. Actualicé la publicación. Gracias.

Recibía este error en Windows y quería volver a un npm anterior para un proyecto y, de una manera muy suave, simplemente fui a la ubicación del enlace simbólico ya formado del comando npm y renombré la carpeta npm en node_modules a su propio nombre de versión y luego descargué la versión que necesitaba y creé una carpeta llamada npm y volqué el contenido descargado allí, ¡que funcionó!

@coreybutler, su sugerencia de crear un enlace simbólico no funcionó porque Windows se quejó de que ya existe un enlace simbólico. También en Windows es complicado editar rápidamente un enlace simbólico. También necesitaba cambiar entre las 2 versiones de npm con regularidad. Por eso hice esto.

Acabo de cambiar el nombre de estos archivos a "1"
npm1.cmd, npm1, npx1, npx1.cmd
y corrió:
" npm1 update -g "

Simplemente cambie el nombre del archivo npm1.cmd , es suficiente. Luego ejecute la actualización npm .

No es necesario usar npm-windows-upgrade .

@xmedeko @chidveer Tal vez me esté perdiendo algo aquí, pero ¿no es npx npm-windows-upgrade más sencillo que cambiar manualmente el nombre de los archivos antes de ejecutar npm update ?

@jakobrosenberg npm-windows-upgrade no me ha funcionado. Tal vez hice algo mal, tal vez intenté actualizar o lo que sea. En mi opinión, el cambio de nombre de un archivo es más simple que estudiar, por qué npm-windows-upgrade no funciona y cómo solucionarlo.

Nota: se recomienda usar npm-windows-upgrade globalmente, por lo que lo ejecuta como npm-windows-upgrade , no npx npm-windows-upgrade .

@xmedeko no se npx npm-windows-upgrade globalmente a menos que esté dentro de un proyecto de nodo con una instalación local de npm-windows-upgrade ?

@jakobrosenberg Sí, tienes razón, no sabía que npx comportaran así, siempre lo uso solo para paquetes de proyectos locales.

funciona como un encanto
solo asegúrese de que 'set node_path =! PROGRAMFILES! nodejs' esté apuntando a la ruta correcta en su caso
específicamente en caso de que no haya una instalación estándar (extracto zip)

¡Mismo problema!
cómo lo resolví:

  1. Panel de control => Desinstalar un programa
  2. Eliminar la aplicación NodeJS
  3. Eliminar toda la carpeta NodeJS en archivos de programa
  4. Nuevo nodo de instalación JS

Solo necesitaba el paso 4, es decir, simplemente descargue e instale de nuevo Node JS.
Entonces funcionó.

Reinstalar la versión del nodo funciona bien, pero dado que este es un problema asociado con nvm , ¿por qué no usar el poder de nvm para solucionar el problema? Para mí, en lugar de pasar por agregar / quitar programas, fue mucho más rápido / simple mantenerlo todo en la línea de comandos. Por ejemplo:

nvm uninstall VERSION
nvm install VERSION

Después de eso, cierre y vuelva a abrir el caparazón. Rápido y fácil (ahora que lo sabes, al menos). 😄

Si tiene algún problema (por ejemplo, nvm indica que la versión ya está instalada), compruebe si la carpeta asociada con esa versión todavía existe (por ejemplo, %NVM_HOME%\VERSION ) y que el archivo node.exe aún no está allí. Si todavía está allí, asegúrese de que no tenía ninguna aplicación potencialmente ejecutando un nodo (por ejemplo, en mi caso, mi IDE lo estaba ejecutando, así que lo cerré y pude eliminarlo por completo).

EDITAR: ⚠️ Supongo que esta solución simple viene con un efecto secundario importante: eliminará sus paquetes instalados globalmente ... hmm ... aún puede ser más simple reinstalarlos manualmente. ¡Tenga cuidado! ⚠️

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

ctsstc picture ctsstc  ·  3Comentarios

SufyanParkar picture SufyanParkar  ·  4Comentarios

Deilan picture Deilan  ·  4Comentarios

keylowgee picture keylowgee  ·  6Comentarios

David263 picture David263  ·  3Comentarios