エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

windowsでnpmの更新に失敗していたので解消して優勝する

発端

久々にnpmで何か作ろうとして、npm init -y したら、以下のメッセージが出てきた。

   ╭────────────────────────────────────────────────────────────────╮
   │                                                                │
   │      New major version of npm available! 6.14.5 -> 7.11.1      │
   │   Changelog: https://github.com/npm/cli/releases/tag/v7.11.1   │
   │               Run npm install -g npm to update!                │
   │                                                                │
   ╰────────────────────────────────────────────────────────────────╯

言われた通りにアップデートしようとしたら、若干ハマったので、記録に残す。
なんか、タイトルがラノベ並みに長くなってしまったな。。。

環境

$ npm -v
6.14.5

vscodeの内容貼り付け

バージョン: 1.55.2 (system setup)
コミット: 3c4e3df9e89829dce27b7b5c24508306b151f30d
日付: 2021-04-13T09:35:57.887Z
Electron: 11.3.0
Chrome: 87.0.4280.141
Node.js: 12.18.3
V8: 8.7.220.31-electron.0
OS: Windows_NT x64 10.0.19041

問題

言われたとおり、npm install -g npm したんだが、下記のエラーが。。。。

$ npm install -g npm
npm ERR! code EEXIST
npm ERR! path C:\Program Files (x86)\Nodist\bin\node_modules\npm\bin\npm-cli.js
npm ERR! dest C:\Program Files (x86)\Nodist\bin\npm.cmd
npm ERR! EEXIST: file already exists, cmd shim 'C:\Program Files (x86)\Nodist\bin\node_modules\npm\bin\npm-cli.js' -> 'C:\Program Files (x86)\Nodist\bin\npm.cmd'
npm ERR! File exists: C:\Program Files (x86)\Nodist\bin\npm.cmd
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!     C:\Users\XXXXXX\AppData\Roaming\npm-cache\_logs\2021-04-29T05_27_15_503Z-debug.log

※XXXXXXは、伏字

なんで、言われた通りにしたらエラーが???

解決方法

npm updateで失敗

調べた結果、下記のコマンドでアップデートできると知って、ウッキウキでコマンドを実行

npm update -g npm

そして、バージョン確認

$ npm -v
6.14.5

なんで???
・・・思考がとまること1分・・・
よくよく考えたら、windows環境だと、nodistでnodeとnpmのバージョン管理していたことを思い出した。

nodistで最新バージョンを挿れて優勝していく

nodistがバージョンアップを止めてそうだったので、nodistからアップデートを行うようにする。

やることは、下記の通り

  1. nodeのバージョン確認
  2. 使えるnodeのバージョンを調査
  3. 使うnodeをインストール
  4. npmをnodeに合わせる

順番に説明する。

nodeのバージョン確認

「敵を知り己を知れば百戦危うからず」と孫子の兵法でも言ってるので、まずは、どういう状況に置かれているのか調べる。

$ node -v
v14.5.0

まずは、今のバージョン把握OK。

使えるnodeのバージョンを調査

使えるnodeのバージョンを調査する。セキュリティやパフォーマンスの観点から、最新版を利用したい。

$ nodist dist
~中略~
  15.13.0
  15.14.0
  16.0.0

16.0.0が最新のLTSっぽいので、16.0.0をインストールすることに決定。

nodeをインストール

nodist use v7.2.0

なんか、インストールはいろんな文法があるみたいだけど、上記の文法が個人的には理解しやすかったので、上記コマンドでインストールする。

終わったら、インストールできているか確認

$ node -v
v16.0.0

大丈夫だね。

npmをnodeに合わせる

npmとnodeは組み合わせが決まっているので、nodistを使って、最新nodeで使えるnpmを挿れて優勝していく。

$ nodist npm match

上記が終わると、nodeに合致するnpmが使える状態になっているはず。
個人的には、7.11.xxxになっていて欲しい

$ npm -v
7.10.0

ちょっと古いみたいだけど、ま、いっか。。。
準優勝くらいは、できたと思う。

雑記

windowsだと、nodistで管理していたことを忘れる。。。
もう、windows標準でライブラリ管理提供したほうがいいのではなかろうか?

もしくは、npm updateしたときにnodistが何かメッセージ吐いてくれれば、あんまり悩まないのになぁ~とは思った。

参考サイト

よく使うnpmコマンド - Qiita

[Node.js] Node.js の導入(Windows編) - Qiita

nodistの基本操作 - Qiita