Mac
Node.js
command
npm

npmが実行できなくて詰まった話(アンインストールから再インストールまで)

はじめに

JSXをインストールしようとしたところ、(JSXに限らずですが)

$ npm install -g jsx
Unhandled rejection Error: EACCES: permission denied, open '/Users/UserName/.npm/_cacache/index-v5/3d/40/1fc7c6f64e0d481b6e19f1d1ebffb32265d1b9ef080c9667bdedb0df3612'

npm ERR! cb() never called!

npm ERR! This is an error with npm itself. Please report this error at:
npm ERR! <https://github.com/npm/npm/issues>

npm ERR! A complete log of this run can be found in:
npm ERR! /Users/UserName/.npm/_logs/2018-07-05T06_32_41_539Z-debug.log

こんなエラーが出ました。
どうやら調べてみると、管理者権限などで一度npmの処理を実行してしまったために権限に管理者権限がついてsudoなしでは実行できなくなってしまった状況みたいです。
.npmフォルダ関連フォルダなども含めて管理者権限で全除去などする必要があるようなので、試してみました。

ただ、sudo rmで始まる危険なコマンドなので、試すのは自己責任でお願いします。

環境

MacBookPro2017 13inch RAM:8GB SSD:512GB MacOS High Sierra 10.13.5
npm 6.1.0
nodebrew 10.6.0

作業

npmのアンインストール

$ sudo npm uninstall npm -g

もしくは

$ sudo rm -rf ~/.npm

スムーズでした。

node.jsのアンインストール

最初、HomebrewでNode.jsをインストールしていたと勘違いし、

$ brew uninstall node.js

と打ったものの当然消えていませんでした。

公式サイトからダウンロードした場合は
org.nodejs.node.pkg.bom
を変更しなければいけないらしいです。

lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \
| while read i; do
  sudo rm /usr/local/${i}
done
sudo rm -rf /usr/local/lib/node \
     /usr/local/lib/node_modules \
     /var/db/receipts/org.nodejs.*

このコマンドをターミナルで1行ずつ打つと終わりです。

nodebrewの再インストール

$ nodebrew install-binary latest
$ nodebrew ls
$ nodebrew use v10.6.0

これでnpmnodeが使えるようになりました。

最後に

初心者にターミナル系は難しい!