Обновление npm при использовании nvm-windows

Я использую nvm-windows версии 1.1.7.

Я только что установил узел 11.9.0.

nvm устанавливает npm версии 6.5.0 вместе с этой версией узла. Однако уже доступна версия npm 6.7.0.

Когда я сейчас делаю npm i -g npm, я получаю:

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.

Я не нашел способа избежать этого.


person Peter T.    schedule 12.02.2019    source источник
comment
Может быть, Volta — это тот инструмент, который мы ищем? Проверьте volta.sh.   -  person Rinat    schedule 03.06.2021


Ответы (7)


У меня была такая же проблема, так что для тех, кто находит это здесь...

В этом выпуске в репозитории nvm-windows github доступно несколько обходных путей:

https://github.com/coreybutler/nvm-windows/issues/300

Есть примеры использования DOS, PowerShell, bash и пакетных сценариев. Надеюсь это поможет!

person Jeff Kilbride    schedule 16.02.2019
comment
Спасибо! Пакетный скрипт из gist.github.com/johnmcase/d31b799b9030327091a0e74880e4c530 хорошо сработал. - person Peter T.; 18.02.2019
comment
В моей версии пакетного скрипта я теперь добавил параметр `--force` в вызове npm, чтобы избежать ошибки обновления, которую я получил: node "!node_path!\node_modules\npm2\bin\npm-cli.js" i npm@!wanted_version! -g --force - person Peter T.; 21.01.2020

Это дубликат моего ответа здесь: https://stackoverflow.com/a/50955293/491553

Вот как я обновляю npm при запуске nvm-windows:

cd %APPDATA%\nvm\v8.10.0           # or whatever version you're using
move npm npm-old
move npm.cmd npm-old.cmd
cd node_modules\
move npm npm-old
cd npm-old\bin
node npm-cli.js i -g npm@latest

И бум, модернизированный.

person Ryan Shillington    schedule 10.03.2019
comment
Чтобы найти путь установки nvm, вы можете запустить команду get-command nvm из powershell. - person Frank Schwieterman; 10.05.2019
comment
Я использовал эту команду для обновления до определенной версии node npm-cli.js i -g [email protected] - person JB Cha; 05.11.2020
comment
Я думаю, мы должны использовать --force в последней команде. Кстати спасибо за ответ. - person Utkarsh; 11.06.2021
comment
Эти команды mv выше предназначены для PowerShell, но вы не можете использовать синтаксис %appdata% в PowerShell, поэтому используйте $ENV:AppData вместо него. Оказалось, что мой choco install -y nvm поместил nvm в C:\ProgramData\nvm, поэтому мне пришлось использовать cd $ENV:ProgramData\nvm\v14.17.1. И да, мне пришлось добавить принудительный флаг node npm-cli.js i -g npm@latest --force. - person abulka; 19.06.2021
comment
Если в каталоге есть npx, то даже его нужно переименовать. В моем случае я также переименовал это. mv npx npx-old mv npx.cmd npx-old.cm - person hashBender; 19.06.2021
comment
Если после обновления у вас возникли ошибки с файлами .ps1 — это не связано и может быть исправлено путем удаления команд .ps1: github.com/Azure/azure-functions-core-tools/issues/1821 - person Oded Ben Dov; 23.06.2021
comment
Мне жаль. Я использовал mv из cygwin. Команда DOS move тоже должна работать. Я обновил скрипт, теперь он работает в vanilla DOS. - person Ryan Shillington; 23.06.2021

У меня операционная система виндовс 10.

Я установил следующим образом.

cd %APPDATA%\nvm\v8.11.3
move npm 5.6.0
move npm.cmd 5.6.0.cmd
cd node_modules\
move npm 5.6.0
cd 5.6.0\bin
node npm-cli.js i -g npm@latest
person KAUSHIK PARMAR    schedule 28.06.2019

Пришлось заставлять :-/

Когда дело дошло до

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

Я предпочел бы использовать

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

возможно, чтобы преодолеть ошибку разрешения, связанную с перезаписью ссылки C:\Program Files\nodejs. Надеюсь, это поможет кому-то...

person Georgi Marinov    schedule 24.08.2020
comment
То же самое - пришлось заставить его, но это сработало. Рад, что кто-то еще попробовал это первым, хотя ???? - person Trevor; 06.02.2021

Это то, что работает для меня. Надеюсь, это полезно.

Я также счел необходимым установить windows-nvm в c:\nvm и c:\nodejs, чтобы предотвратить проблемы с неподдерживаемыми путями с пробелами.

rm C:\nodejs\npm*
rm C:\nodejs\npx*
mv C:\nodejs\node_modules\npm C:\nodejs\node_modules\npm-old
node C:\nodejs\node_modules\npm-old\bin\npm-cli.js i -g npm@next
person Clayton Bell    schedule 20.06.2020

  1. загрузите этот файл updateNpm.bat
  2. откройте powershell в той же папке и выполните эту команду updateNpm.bat latest
person sytolk    schedule 15.06.2021

это сработало для меня curl -L https://npmjs.org/install.sh | sh

Если у вас уже установлен git bash, используйте его там

person scr2em    schedule 07.07.2021
comment
В вопросе есть окна в качестве тега, и текст также ясно показывает этот факт, загрузка шеллскрипта ничего не даст. - person Timotheus; 08.07.2021
comment
@Timotheus Это так .... и он сначала удалит текущую версию npm, а затем установит последнюю. Это сработало для меня .... - person scr2em; 09.07.2021
comment
И в powershell, и в cmd я получаю 'sh' is not recognised... - person Timotheus; 09.07.2021
comment
если у вас установлен git bash, попробуйте его там - person scr2em; 09.07.2021