経緯
最近リリースされたnpm v5を試したくて、試行錯誤していた。
特にpackage-lock.json
の挙動について、今までのnpm shrinkwrap
と比較しながら勉強したかったので、$ npm i -g npm@4.0.0
みたいな感じで、手元のnpmのバージョンをころころ変えていた。
そしたら、上手く動かなくなってしまった……。
Cannot find module 'safe-buffer'
というエラーが出てしまい、npmを実行できない。
もともとnodebrewを使っていたので、$ nodebrew use x.x.x
でNodeのバージョンを変えたりしたが、ダメだった。
バージョンによってはエラーが出なくなることもあったが、そうすると今度は、gulpを使ったビルドが上手くいかなくなる。
こんな感じでハマってしまい、もう面倒だったので、nodebrewそのものをインストールし直すことにした。
ネットに書いていることをそのままやっただけだが、また同じ状況になった時のために、書いておく。
削除
まず、nodebrewをアンインストールする。
ホームディレクトリ(/Users/UserName)の.nodebrew
にインストールされているので、このディレクトリを丸ごと削除すればいい。
$ cd $ rm -rf .nodebrew
インストール
これは、インストールの手順をもう一度行えばよい。
二行目はPATHの設定なので、PATHを削除していなければ必要ない。
$ curl -L git.io/nodebrew | perl - setup $ echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bash_profile && source ~/.bash_profile
後はnodebrewを使って、元々使っていたNodeを設定する。そうすればnpmも自動でついてくる。
これで、エラーも出ること無く、無事にnpmを実行できるようになった。
プロジェクトによっては上手くいかないこともあったが、$ rm -rf node_modules
でディレクトリを削除してから$ npm i
でnpmモジュールを改めてインストールすれば、解決した。