Cli: [ОШИБКА] `npm install -g npm` удаляет команду` npm`

Созданный на 18 дек. 2019  ·  19Комментарии  ·  Источник: npm/cli

Что почему

npm команда удаляется после выполнения npm install -g npm .

когда



  • 2019/12/18

  • Я не могу точно вспомнить, когда мне удалось запустить эту команду, но не менее недели назад.

где



  • npm / cli

Как

Текущее поведение


Это журнал:

~
% brew install node
==> Downloading https://homebrew.bintray.com/bottles/node-13.3.0_1.catalina.bottle.tar.gz
Already downloaded: /Users/manabu/Library/Caches/Homebrew/downloads/8a482358c0487b3ffeeebf4d1f3b3ca825018f6318ecdd6368fd0a6f45e0bea1--node-13.3.0_1.catalina.bottle.tar.gz
==> Pouring node-13.3.0_1.catalina.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Summary
🍺  /usr/local/Cellar/node/13.3.0_1: 4,663 files, 59MB

~
% npm install -g npm
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../../../lib/node_modules/npm/man/man1/npm-access.1
npm ERR! dest /usr/local/share/man/man1/npm-access.1
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../../../lib/node_modules/npm/man/man1/npm-access.1' -> '/usr/local/share/man/man1/npm-access.1'
npm ERR! File exists: /usr/local/share/man/man1/npm-access.1
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/manabu/.npm/_logs/2019-12-18T07_51_00_280Z-debug.log

Я подтвердил, что это произошло снова, когда я запустил brew reinstall node .

На самом деле, как сказано в выводе, я успешно запустил его с помощью --force но я думаю, что просто показать эти журналы лучше, чем удалить команду npm .

Изменить (2020/01/11):

На самом деле, как сказано в выводе, я успешно запустил его с помощью --force

В частности, я сделал следующие шаги:

  1. Восстановить команду npm которая была удалена npm install -g npm

    • Поскольку я использую Homebrew для управления Node.js, я запустил brew reinstall node чтобы восстановить его.

  2. Запустите npm install -g --force npm как упомянутый результат

Действия по воспроизведению

  • н / д

Ожидаемое поведение

  • Обновление npm прошло успешно

ВОЗ



  • н / д

Рекомендации



  • н / д

Самый полезный комментарий

Обобщенное решение:

brew reinstall node
npm i -g --force npm

Все 19 Комментарий

связанные с изменением @isaacs в https://github.com/npm/cli/commit/320ac9aeeafd11bb693c53b31148b8d10c4165e8 npm / bin-links # 12 npm / soft -fs # 7, выпущенном в

всплыли на бугорок НПМ от 6.13.2 до 6.13.4 в доморощенного https://github.com/Homebrew/homebrew-core/commit/6acc21a27d0ba4ecfd6ebf4d77af7025143daefe#diff -d3ef2414308e30df24a517ca9a1324ee (автор / совершил по @pepyakin @fxcoudert @bayandin)

AFAICS это предполагаемое поведение в npm. Мне непонятно, как с этим поступить в домашнем пиве.

https://github.com/npm/cli/issues/672

Я сделал yarn global add npm и он установил [email protected] и я не обнаружил ошибки, но теперь все мои предыдущие глобальные пакеты исчезли: ((

Я отказался от домашнего пивоварения и просто использовал https://github.com/nvm-sh/nvm

Просто делать

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

Тогда где-то в конце вы увидите

=> Compressing and cleaning up git repository

=> Appending nvm source string to /Users/aprilmintacpineda/.bash_profile
=> Appending bash_completion source string to /Users/aprilmintacpineda/.bash_profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Просто сделайте source <name of profile> В моем случае <name of profile> равно ~/.bash_profile поэтому это будет source ~/.bash_profile

тогда

nvm install node чтобы установить последнюю версию узла, он также установит последнюю версию npm, и это сработало для меня.

не уверен, ясно ли всем в этой теме, что решение, учитывая, что вы знаете, что делаете и почему, просто

npm i -g --force npm (обратите внимание на флаг --force )

Проблема в том, что после выполнения команды npm -I npm и получения сообщения об ошибке попытка выполнения любой команды npm завершилась ошибкой с 'zsh: command not found: npm', поэтому я не смог бы выполнить команду --force, даже если бы захотел. Мне пришлось заварить переустановку узла, чтобы вернуть npm.

Извините, ребята, я не полностью описал, как мне временно удалось избежать этой проблемы. Я обновил описание, пожалуйста, посмотрите.

не уверен, ясно ли всем в этой теме, что решение, учитывая, что вы знаете, что делаете и почему, просто

npm i -g --force npm (обратите внимание на флаг --force )

Это было единственное решение, которое я нашел, чтобы исправить это на самом деле.

Второй раз это происходит со мной через несколько недель. Вы можете исправить это с помощью brew reinstall node .

Вот результат, который я получаю при запуске npm install -g npm :

/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../../../lib/node_modules/npm/man/man1/npm-adduser.1
npm ERR! dest /usr/local/share/man/man1/npm-adduser.1
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../../../lib/node_modules/npm/man/man1/npm-adduser.1' -> '/usr/local/share/man/man1/npm-adduser.1'
npm ERR! File exists: /usr/local/share/man/man1/npm-adduser.1
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/albertvilacalvo/.npm/_logs/2020-01-13T11_55_47_922Z-debug.log

Обобщенное решение:

brew reinstall node
npm i -g --force npm

Это происходит не только при установке homebrew. У меня такая же проблема с установщиком nodejs (с официального сайта). Хотя исправление работает ... (sudo npm i -g --force npm)

Обновление npm удаляет npm? И это не исправлено с декабря?

Обновление npm удаляет npm? И это не исправлено с декабря?

Да, это случилось со мной и на MacOS 10.15.2

Со мной тоже случилось. MacOS Catalina 10.15.3

Это только что случилось со мной на Ubuntu, и я не использую "brew".

В итоге я попытался переустановить npm, но без sudo я не смог установить его. Устанавливается с помощью sudo, затем обнаружено (по-видимому, плохое) руководство по возврату права собственности на каталог ~ / .npm (и еще несколько). Сначала это все еще не работало, но hash -r исправил (оглядываясь назад, перезапуск моего Ubuntu тоже мог сработать). Существует небольшая вероятность, что это также решило проблему, с которой я столкнулся с реакцией.

Об этой ошибке сообщили в 2014 году, и она произошла со мной сегодня, в 2020 году. Какая катастрофа. Это когда-нибудь будет исправлено?

Я отказался от домашнего пивоварения и просто использовал https://github.com/nvm-sh/nvm

Просто делать

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

Тогда где-то в конце вы увидите

=> Compressing and cleaning up git repository

=> Appending nvm source string to /Users/aprilmintacpineda/.bash_profile
=> Appending bash_completion source string to /Users/aprilmintacpineda/.bash_profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

Просто сделайте source <name of profile> В моем случае <name of profile> равно ~/.bash_profile поэтому это будет source ~/.bash_profile

тогда

nvm install node чтобы установить последнюю версию узла, он также установит последнюю версию npm, и это сработало для меня.

Этого не происходит, если вы используете nvm

«Этого не происходит, если вы используете nvm»

Да, ну, этого не произойдет, если вы используете yarn , но я не уверен, что это актуально.

Я думаю, это не имеет значения. NVM - это диспетчер версий узлов, я испытал это, когда использовал brew для установки узла, затем я переключился на nvm, с тех пор я этого еще не испытал. Посмотрите здесь, если вы не знаете, что это такое https://github.com/nvm-sh/nvm#installing -and-update

Была ли эта страница полезной?
0 / 5 - 0 рейтинги