💣
WSLでnpmを実行するとエラーが出た
WSL で npm を実行するとエラーが出た
経緯
zenn の記事を git 管理するために、WSL の Node.js を 14 以上にしなければならなかった。
エラー全文
$ npm -v
ERROR: npm v9.6.4 is known not to run on Node.js v10.19.0. This version of npm supports the following node versions: `^14.17.0 || ^16.13.0 || >=18.0.0`. You can find the latest version at https://nodejs.org/.
ERROR:
/usr/local/lib/node_modules/npm/lib/utils/exit-handler.js:19
const hasLoadedNpm = npm?.config.loaded
^
SyntaxError: Unexpected token .
at Module._compile (internal/modules/cjs/loader.js:723:23)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at module.exports (/usr/local/lib/node_modules/npm/lib/cli.js:42:23)
at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:2:25)
at Module._compile (internal/modules/cjs/loader.js:778:30)
このエラーをそのまま読むと npm v9.6.4
は Node.js v10.19.0
ではサポートされていない。
サポートしているのは ^14.17.0 || ^16.13.0 || >=18.0.0
のみ。
おそらく過去に何かしらやらかして npm だけアップデートされてしまったのではないか。
というわけで最新版をインストールしたいのだが、多くの記事は npm 経由で Node.js をアップデートしているため、npm がまともに使えなくては Node.js がアップデートできない。
試したこと (ダメだったこと)
- apt 経由で Node.js の再インストール
- apt 経由で npm の再インストール
解決策
直接ファイルをダウンロードしてアップデートする。
なお下のコマンド群の中で make
がとんでもなく時間がかかるので注意。
今回は v18.16 安定版
$ wget https://nodejs.org/dist/v18.16.0/node-v18.16.0.tar.gz
$ tar -zxvf node-v18.16.0.tar.gz
$ cd node-v18.16.0
$ ./configure --prefix=/usr
$ make
$ make install
Discussion