発端
久々に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からアップデートを行うようにする。
やることは、下記の通り
- nodeのバージョン確認
- 使えるnodeのバージョンを調査
- 使うnodeをインストール
- 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が何かメッセージ吐いてくれれば、あんまり悩まないのになぁ~とは思った。