Cli: [バグ] `npm install -gnpm`は` npm`コマンドを削除します

作成日 2019年12月18日  ·  19コメント  ·  ソース: npm/cli

何/なぜ

npmコマンドは、 npm install -g npm実行後に削除されます。

いつ



  • 2019/12/18

  • このコマンドの実行に成功したのはいつか正確には思い出せませんが、少なくとも1週間前です。

どこ



  • 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 install -g npmによって削除されたnpmコマンドを復元します

    • Node.jsの管理にHomebrewを使用しているので、 brew reinstall nodeを実行して復元しました

  2. 上記の出力としてnpm install -g --force npmを実行します

再現する手順

  • 該当なし

予想される行動

  • npmの更新は成功しました

WHO



  • 該当なし

参考文献



  • 該当なし

Bug

最も参考になるコメント

解決策の要約は次のとおりです。

brew reinstall node
npm i -g --force npm

全てのコメント19件

@isaacs「変更に関連https://github.com/npm/cli/commit/320ac9aeeafd11bb693c53b31148b8d10c4165e8にリリースNPM / binにリンク#12 NPM /優しい-FS#7 [email protected]

自作で6.13.2から6.13.4にNPMのバンプによって浮上https://github.com/Homebrew/homebrew-core/commit/6acc21a27d0ba4ecfd6ebf4d77af7025143daefe#diff (執筆/ @pepyakin @fxcoudert @bayandinによってコミット)-d3ef2414308e30df24a517ca9a1324ee

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フラグに注意してください)

これは私が実際にこれを修正するために見つけた唯一の解決策でした。

これは数週間で2回目です。 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

これは、自作のインストールだけで発生するわけではありません。 nodejsインストーラー(公式サイトから)でも同じ問題が発生します。 ただし、修正は機能します...(sudo npm i -g --force npm)

npmを更新するとnpmが削除されますか? そしてそれは12月以来修正されていませんか?

npmを更新するとnpmが削除されますか? そしてそれは12月以来修正されていませんか?

うん、それはMacOS10.15.2でも私に起こった

私にも起こった。 MacOS Catalina 10.15.3

これはUbuntuで起こったばかりで、「brew」は使用していません。

結局npmを再インストールしようとしましたが、sudoなしではインストールできませんでした。 sudoとともにインストールされ、〜/ .npmディレクトリ(および他のいくつか)の所有権を取り戻すための(明らかに悪い)ガイドが見つかりました。 最初はまだ機能しませんでしたが、hash -rで修正されました(振り返ってみると、Ubuntuの再起動も機能した可能性があります)。 これにより、react-snapで発生していた問題も修正された可能性がわずかにあります。

このバグは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-updatingが何であるかわからない場合は、ここで確認してください

このページは役に立ちましたか?
0 / 5 - 0 評価