💣

WSLでnpmを実行するとエラーが出た

2023/04/18に公開

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.4Node.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