Nodistでnpmが上手く動かなくなったときの対処法

GitHub, Node.js, Nodist, npm

( ´-`).。oO(この記事はだいたい 4 分くらいで読めるかも)

Windowsで使えるNode.jsのバージョン切替ソフトとして知られるNodist

確かにNode.jsのバージョンは切り替えられるけど、npmのバージョンが自動でNode.jsに合うように調整されなかったり、npm自体のバージョンを変えようとするとnpmコマンドが使えなくなってしまったりという問題に遭遇することがある。(Nodist v0.9.1現在)

この記事では、そんなNodist環境下でnpmを上手いこと目的のバージョンに調整する方法を説明する。

普通にやろうとすると失敗する

まず、普通にやってダメだった例を書いておく。

Windows PCにNodistをインストールし、Node.jsを所望のバージョンである10.13.0にした。

普通に考えればここでnpmのバージョンも連動して6.4.1になって欲しいところだけど、Nodistはnpmのバージョンの自動調整まではしてくれない。

そこで手動で調整するため、次のコマンドを実行した。

nodist npm match 

そしてnpmのバージョンを確認するため次のコマンドを実行した。

npm -v

すると、なんということでしょう。次のエラーが発生した。

Error: Cannot find module '../lib/utils/unsupported.js'

npm自体が使えなくなっていた。。

npm自体を手動で持ってくる必要がある

Nodist環境ではnpmは次のフォルダに置かれる。

C:\Program Files (x86)\Nodist\npmv\x.x.x\ (x.x.xはnpmのバージョン番号)

上の普通の手順でnpmのバージョンを変えようと試みたとき、実はこのフォルダ(6.4.1フォルダ)は作られたけど中身が何も無かった。

つまり、何らかの理由でnpmの本体がインターネットの向こう側から取得できていなかったっぽい。

Nodistがnpmを持ってきてくれないなら、ユーザーが手動でダウンロードしてくればよい。

具体的には次のようにする。

GitHubのnpm/cliリポジトリの、所望のバージョン番号のページにアクセスする。URLは次の通り。

https://github.com/npm/cli/tree/vX.X.X (X.X.Xはnpmのバージョン番号)

npmのバージョン6.4.1をダウンロードしたい場合は例えば次のURLにアクセスすればよい。

https://github.com/npm/cli/tree/v6.4.1

続いて、下の画像のように、「Code」ボタンをクリックして「Download ZIP」をクリックする。

ダウンロードしたZIPファイルを展開し、中身をすべて次の場所に置く。

コマンドプロンプトを再起動して次のコマンドを実行してみよう。npmのバージョン番号が表示されると思う。

npm -v

あとはいつも通りnpmコマンドを使って色々開発していけばよい。