Node.js とても流行っていますね。

https://nodejs.org/ja/download/releases/

 

みなさん、 nodejs のバージョン管理はどうされていますか?

複数バージョンをインストールしたあと、状況に応じて適切なバージョンに切り替えないといけません。

そんな時に便利なのが「nodist」https://github.com/nullivex/nodist

 

コマンドひとつでバージョンを スイッチ できます。

 

nodist で複数バージョンをインストールしたところ


 

v11 から v12 へスイッチしてみます。

うんうん、とても簡単ですねー

 

インストール可能なバージョンの一覧を表示するには

nodist dist



新しいバージョンをインストールするには

nodist + xx.xx.xx



Node.js 開発者には nodist が必須ですね。最&高
 

 

閑話休題

npm も古いだろから最新バージョンにアップデートしようとしたところ
 

>nodist npm match
npm match
stream.js:74
      throw er; // Unhandled stream error in pipe.
      ^

Error: Failed to read response from https://codeload.github.com/npm/npm/tar.gz/v6.4.1
    at Request. (C:\Program Files (x86)\Nodist\lib\build.js:110:25)
    at emitOne (events.js:96:13)
    at Request.emit (events.js:188:7)
    at Request.onRequestResponse (C:\Program Files (x86)\Nodist\node_modules\request\request.js:954:10)
    at emitOne (events.js:96:13)
    at ClientRequest.emit (events.js:188:7)
    at HTTPParser.parserOnIncomingClient [as onIncoming] (_http_client.js:473:21)
    at HTTPParser.parserOnHeadersComplete (_http_common.js:99:23)
    at TLSSocket.socketOnData (_http_client.js:362:20)
    at emitOne (events.js:96:13)
    at TLSSocket.emit (events.js:188:7)
    at readableAddChunk (_stream_readable.js:176:18)
    at TLSSocket.Readable.push (_stream_readable.js:134:10)
    at TLSWrap.onread (net.js:551:20)

がーーん

エラーですね、エラー笑い泣き

しかもですよ、アップデートに失敗するだけならまだしも

npm コマンドが使えなくなってるぢゃないっすか。
 

>npm -v
internal/modules/cjs/loader.js:584
    throw err;
    ^

Error: Cannot find module 'C:\Program Files (x86)\Nodist\npmv\6.4.1\bin\npm-cli.js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:582:15)
    at Function.Module._load (internal/modules/cjs/loader.js:508:25)
    at Function.Module.runMain (internal/modules/cjs/loader.js:754:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:622:3)
  


はぁはぁ壊れちゃったのね・・・再インストールするかぁ
 

 

なんでだろうと調べたところ、npm のダウンロード先URLが変わっているのが原因でした。

【変更前】https://codeload.github.com/npm/npm/tar.gz/vVERSION

【変更後】https://codeload.github.com/npm/cli/tar.gz/vVERSION

 

"C:\Program Files (x86)\Nodist\lib\npm.js"を編集して修正します。



1回目に失敗したときに ゴミが残るので消しておきます。

 

 

npm match で npm をアップロードできるようになりますウインク

>nodist npm match
npm match
https://codeload.github.com/npm/cli/tar.gz/v6.4.1 [============== ] 4687/5150 KiB 91% 2.0s


>npm -v
6.4.1
  

 

FYI

Node.jsは Googleが作った V8 で動いています。

V8は、C++ でコーディングされています。

JavaScript も やっぱり古典 C言語で書かれています。

それにしても V8 ってカッコいいですね。