どうも、Tです。
フロントエンドの勉強のためにnodistなるものを触っていたのですが、エラーがでて困りました。絶対次セットアップするとき忘れるので備忘録。
目次
事象
npmのバージョンをアップしたくて、「nodist npm match」コマンドを実施したところ下記のエラーが出力されてしまう。
>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)
環境
- Windows10:1089
- nodist:0.8.8
原因
エラーメッセージの下記URLが原因になります。
Error: Failed to read response from https://codeload.github.com/npm/npm/tar.gz/v6.4.1
エラーコードのURLに接続してみると原因がわかりました。
リポジトリ先を移動したよということなので、リポジトリの変更をすれば大丈夫そうです。
解決方法
「PC->C:->Program Files(x86)->Nodis->lib->npm.js」を開きます。
/**
* List available NPM versions
* @return {string}
*/
NPMIST.listAvailable = function(){
return github.releases.listReleasesAsync({
owner: 'npm',
repo: 'cli',
per_page: '100'
});
};
下記の部分を変更します。
- 変更前: repo: ‘npm‘,
- 変更後: repo: ‘cli‘,
/**
* Get a download URL for the version
* @param {string} version
* @return {string}
*/
NPMIST.downloadUrl = function(version){
return 'https://codeload.github.com/npm/cli/tar.gz/vVERSION'
.replace('VERSION',version.replace('v',''));
};
下記の部分を変更します。
- 変更前:return ‘https://codeload.github.com/npm/npm/tar.gz/vVERSION’
- 変更後:return ‘https://codeload.github.com/npm/cli/tar.gz/vVERSION’
設定変更する前に、「nodist npm match」を実行すると「PC->C:->Program Files(x86)->Nodis->npmv」フォルダに空フォルダ(画像では6.4.1)ができてしまっているため削除しておきましょう。
>nodist npm match npm match 'https://codeload.github.com/npm/cli/tar.gz/v6.4.1 [============== ] 4972/5150 KiB 97% 0.1s' >npm -v 6.4.1
「nodist npm match」が実行できるようになりました。バージョンも上がっています。
これ直さないのか
割と簡単に直せるはずなので放置してる原因を調べてみました。現在(2019年1月時点)で最新の「nodist:0.8.8」を使っていたんですが、リリースが2016年・・・絶賛放置中です。
Pull Requestは上がっているので、修正を待つばかりです。
はて、そもそもnode.jsの管理はほかのソフトが主流になっているのか?Macでhomebrew使っているからWindowsはもう下火なのか・・・・。
まとめ
なんか本題はいる前に、これにえらくはまってしまいました。こんなんばっかりー(´・ω・`)