Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9034

npmのアップデート(npm install -g npm)をしてもバージョンが変わらない場合の解決例

$
0
0
以下のような状況に遭遇したものの、ネット上に似たような事例はあっても解決に至るものがなかったので一例として残しておきます。 npmを使用中にバージョンアップするようにメッセージが出たので、言われた通りnpm install -g npmを実行。 画面上は問題なくアップデートが終了したように見えたのだが、その後再びメッセージが表示される。 npm -vでバージョンを確認すると確かにバージョンが低いままだったので再度npm install -g npmを実行。 問題なくアップデートが済んだのでnpm -vをするとバージョンが変わっていなかった。 結論としては、HomebrewとNodebrewの双方でNode.jsをインストールしており、/usr/local/bin/にnpmファイルが残っていたことが原因だったようです。 NodeはNodebrewを、npmはHomebrewにあったものにパスが通っていたため、Nodebrew管理のnpmは問題なくアップデートされているのに、コマンドに使用されるのはHomebrewのnpm、という事態に落ち入っていました。 環境 MacBook Pro (15-inch, 2019) macOS Big Sur バージョン11.2.1 調査記録 原因調査 ログが残っていなかったのですが、npm v6.13.4からnpm v7.14.0にするのが今回の目標です。 まずは実行されているファイルの確認をします。 ちなみに、Nodeのインストールと共にnpmがインストールされ、npmがインストールされるとnpxもインストールされるということで、npxについてもnpm同様に調査していきます。 npmとnpx。なにが違う? npmのバージョン5.2.0以降はnpxがプリインストールされているそう。 zsh $ npm -v 6.13.4 $ npx -v 6.13.4 $ which node /Users/your_name/.nodebrew/current/bin/node $ which npm /usr/local/bin/npm $ which npx /usr/local/bin/npm パスの通っている場所が違うので調べてみたところ、HomebrewとNodebrewどちらにもNode.jsがインストールされていました。 zsh $ brew list node /usr/local/Cellar/node/13.11.0/bin/node /usr/local/Cellar/node/13.11.0/etc/bash_completion.d/npm /usr/local/Cellar/node/13.11.0/include/node/ (136 files) /usr/local/Cellar/node/13.11.0/lib/dtrace/node.d $ nodebrew list node v12.16.0 current: v12.16.0 NodeだけNodebrew管理のものが参照されていたのは、環境変数として記述していたからのようです。 同じような状況で、.bashrc~/、 .bash_profile、 .zshrc、 .zshenv などに追記した覚えのある方は確認してみてください。 ls -a ~/ と実行すればファイルの有無は確認できます。 zsh $ vim ~/.zshenv # node export PATH=$HOME/.nodebrew/current/bin:$PATH Homebrew管理のNode.jsをアンインストール ルートディレクトリ直下にあるファイルは怖いのであまり触りたくないのですが、Homebrew管理のものであれば再インストールも可能なので大丈夫だろうと考えアンインストールを実行します。 zsh $ brew uninstall node Error: Refusing to uninstall /usr/local/Cellar/node/13.11.0 because it is required by yarn, which is currently installed. You can override this and force removal with: brew uninstall --ignore-dependencies node nodeの依存関係にyarnがあるのでアンインストールができないと表示されました。 brew uninstall --ignore-dependencies nodeで強制実行も出来ると提案されていますが、訳もわからず強制実行して良い結果になった試しがないのでyarnについて調べます。 yarn公式 It is recommended to install Yarn through the npm package manager, which comes bundled with Node.js when you install it on your system. インストールした時のことは覚えていませんが、調べたところどうやらyarnはnpmからのインストールを推奨しているようなので、アンインストールしてもNodebrew管理のnpmで簡単に再インストールできそうだという判断でアンインストールを実行します。 ちなみに今回の場合はHomebrewからインストールしていたようです。 Nodeも複数バージョンインストールされていたようなので、指示通りのコマンドで全てアンインストールします。 zsh $ brew list yarn /usr/local/Cellar/yarn/1.22.4/bin/yarn /usr/local/Cellar/yarn/1.22.4/bin/yarnpkg /usr/local/Cellar/yarn/1.22.4/libexec/bin/ (5 files) /usr/local/Cellar/yarn/1.22.4/libexec/lib/ (2 files) /usr/local/Cellar/yarn/1.22.4/libexec/package.json $ brew uninstall yarn Uninstalling /usr/local/Cellar/yarn/1.22.4... (14 files, 5MB) /Users/wm/Desktop/gulp_with_jekyll_test $ which yarn yarn not found $ brew uninstall node Uninstalling /usr/local/Cellar/node/13.11.0... (4,686 files, 60.4MB) node 13.10.1 and 13.8.0 are still installed. Run `brew uninstall --force node` to remove all versions. /Users/wm/Desktop/gulp_with_jekyll_test $ brew uninstall --force node Uninstalling node... (9,372 files, 120.6MB) Nodebrew管理への移行 アンインストールは問題なく行われたので、再度実行される場所を調べるも変化がありませんでした。 zsh $ which npm /usr/local/bin/npm $ which npx /usr/local/bin/npx 該当ディレクトリを見ると、.npm、 .npxというファイルがあったため、別の場所へ移して再度確認をします。 (今回の場合はデスクトップへ移動させました) zsh $ which npm /Users/wm/.nodebrew/current/bin/npm $ which npx /Users/wm/.nodebrew/current/bin/npx $ npm -v 7.14.0 $ npx -v 7.14.0 ちゃんとNodebrewのものを参照してくれたようです。 ここまで確認できれば、先ほど移動させた.npm、 .npxのファイルは削除して大丈夫だと思います。 仕上げに、先ほどアンインストールしたyarnをインストールしなおします。 zsh $ npm install -g yarn > yarn@1.22.10 preinstall /Users/your_name/.nodebrew/node/v12.16.0/lib/node_modules/yarn > :; (node ./preinstall.js > /dev/null 2>&1 || true) /Users/your_name/.nodebrew/node/v12.16.0/bin/yarn -> /Users/your_name/.nodebrew/node/v12.16.0/lib/node_modules/yarn/bin/yarn.js /Users/your_name/.nodebrew/node/v12.16.0/bin/yarnpkg -> /Users/your_name/.nodebrew/node/v12.16.0/lib/node_modules/yarn/bin/yarn.js + yarn@1.22.10 added 1 package in 0.959s $ which yarn /Users/your_name/.nodebrew/current/bin/yarn 無事に全てNodebrew管理となりました。 お疲れ様でした。 後書き とても久しぶりに環境構築系の問題にぶち当たったのですが、丁寧に調べたところ、スムーズに解決することができました。 一年位前は色々な記事に書いてあることを手当たり次第に試し、カオスな状況を作り出しては反省していたので、その経験を生かせたように思います。 せっかく情報の溢れた時代を生きているのですから、分からないことは理解するまでしっかりと調べるべきですね。 この記事もどなたかの参考になっていれば嬉しく思います。 参考 nodebrewでNode.jsをインストールする。

Viewing all articles
Browse latest Browse all 9034

Trending Articles