npmでのインストールが404エラーになってたが原因はregistryの設定ファイルだった


node-sassを使おうと思ってnode.jsをインストールし、npmを使ってnode-sassをインストールしようと試みたが、エラーになるので何度もアンインストールとインストールを繰り返したものの全然解決せず。。。

ってかこれ系はちょっと知識をあまり持ち合わせてないのでさんざん調べまくりました。

ちなみに下記が[npm install -g node-sass]を試して出たエラー文

npm ERR! code E404
npm ERR! 404 Not Found: node-sass@latest

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\matsuda\AppData\Roaming\npm-cache\_logs\2018-04-27T10_55_41_391Z-debug.log

404 Not Found: node-sass@latest

エラー文でググっても英語の記事ばかりだし具体的な解決方法までに至らず、何度もエラー文を眺めてたらある仮説に辿り着きました。

これってインストールファイル見つけられてないんならそこまでのパスが間違ってるんじゃ?

という事でエラーのログファイルを調べてみると、あることに気づきました。

http fetch GET 404 http://github.com/npm/npm/issues/node-sass 1053ms

http://github.com/npm/npm/issues/node-sassってどこからインストールしようとしてんだよ!もちろん上記URLは存在しないので404エラーが返ってきても不思議ではありません。

こちらのページを参考に[npm -g config list]でregistryのURLを確認したところやはり

metrics-registry = “http://github.com/npm/npm/issues”

となっている。どうやらここを変更すれば変えられるっぽいのでさっそくコマンドで変更を試みるもなぜか変化なし。

それなら直接ファイルの値を変更できないかとnpmフォルダ内を探したものの、みつからなかった。。。が、なんかC:\Users\ユーザー名の直下にいくつかnpm関連のファイルを見つけ、その中の.npmrcファイルに

registry=http://github.com/npm/npm/issues

と一行だけ記述されていたのであやしいと思い

registry=http://registry.npmjs.org

に変えて再びコマンドプロンプトでregistryの値を確認したらビンゴ!

ようやくregistryの変更できたので再度[npm install -g node-sass]を試すとスルスルとインストールが完了した。(やった!)

しかし通常なら.npmrcファイルはnpmフォルダに収まってそうなのでインストールしたときになんらかの原因でフォルダ外に出てしまってんだろうか?

インストールの仕組みを理解してないと中々さくっと気づけないもんですねぇ。