【メモ】npmをアップデートしたらnpmコマンドがpermission deniedになったけど再起動したら治った

はじめに

ある日、npmのアップデートがあるよ!と言われ、うっかりnpm i -g npmしてしまったらエラーになり(管理者権限で実行しろ云々と怒られる)、 そしたらnpmコマンドが実行できなくなってしまい、困る。 (本来ならバージョン管理に使ってるnodistを通してnpmをアップデートするべきだった)

色々探った結果、コマンドプロンプト(cmd.exe)等では普通に実行できるが、普段使っているbashではエラーになることがわかった。

環境

  • OS:windows 10 64bit
  • Nodeバージョン管理:nodist v0.8.8
  • 黒い画面:git bash

3つのnpm?

エラー内容によると /c/Program Files (x86)/Nodist/bin/npm を実行しようとしてpermission deniedとなっていた。
なので /c/Program Files (x86)/Nodist/bin/の中身を見てみると

  • npm
  • npm.cmd
  • npm.exe

と、npmとつくものが3つも出てきて混乱する。

どうやらcmdでは直接「npm.exe」を実行するので問題ないが、 git bashでは最初に引っかかる「npm」を実行しようとしてエラーになっているようだった。

permissionを正しく設定していればいいのかと思ったけど、 「npm」のpermissionの設定が何故かできない…。

再起動で復活

ネット上で
「ぶっ壊れてpermissionを変更できないファイルができちゃって困ってたけど、再起動したら治ったよ!」
という文言を発見する。

で、再起動してみたら前述の「npm」ファイルが綺麗さっぱり消えてた。 どうやらアップデートエラー時に残ったゴミファイル?が悪さしていたようだ。 めでたしめでたし…

感想

npmのアップデートは前も実行に失敗して苦労したが、今回もやってしまった。 準備もせず、むやみに行うのはやめよう(自省)
ただ、何となく再起動して何となく解決、というわけではなく原因っぽいのは分かった上で直せたのでとりあえず満足。

参考