2015年2月27日金曜日

MacでNode.jsとnpmをアンインストールするには

Node.jsをMacからアンインストールするには、以下のシェルスクリプトを実行する。
lsbom -f -l -s -pf /var/db/receipts/org.nodejs.pkg.bom \
| while read i; do
  sudo rm /usr/local/${i}
done
# uninstall node
sudo rm -rf /usr/local/lib/node \
     /usr/local/lib/node_modules \
     /var/db/receipts/org.nodejs.*;

# uninstall npm
sudo rm -rf ~/.npm;

# uninstall check
node -v;
npm -v;

最後にnodeやnpmコマンドを実行して失敗することを確認している。


上記のコードを、「uninstall-node.sh」などのファイル名で保存して、実行権限を付与。
$ chmod +x ./uninstall-node.sh

実行すると、Node.js、npmのアンインストールが完了する。
$ ./uninstall-node.sh


再インストールするには

公式のダウンロードサイトからpkgをダウンロードしてNode.jsを再インストールする。homebrewやnodebrewなどからインストールする方法もあるが、公式のダウンロードサイトからpkgをダウンロードしてインストールする方法の方が確実だと感じた。

再インストールが完了したら、念の為バージョン確認。
$ node -v
v0.12.0
$ npm -v
2.5.1


アンインストールに至った経緯

そもそも、Node.jsを再インストールして白紙からやり直そうと思ったのは、npm install 実行中に色々とエラーが発生したから。

例えば、gulp-sass@1.3.3をインストールでは、以下のエラーが発生。
Error: `libsass` bindings not found. Try reinstalling `node-sass`?
    at getBinding (/path/to/my/project/node_modules/gulp-sass/node_modules/node-sass/lib/index.js:21:11)
    at Object.<anonymous> (/path/to/my/project/node_modules/gulp-sass/node_modules/node-sass/lib/index.js:181:23)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/path/to/my/project/node_modules/gulp-sass/index.js:3:17)
    at Module._compile (module.js:456:26)

更に、browser-sync@2.2.1のタスク実行では、以下のエラーが発生。
dyld: Symbol not found: _node_module_register
  Referenced from: /path/to/my/project/node_modules/browser-sync/node_modules/socket.io/node_modules/engine.io/node_modules/ws/build/Release/bufferutil.node
  Expected in: dynamic lookup


stackoverflowを見ると、Node.jsのバージョンが関係しているようだったので、クリーンな状態に一旦戻してからnpm installを試してみようと。

クリーンな状態から、再度、npm installを実行すると、gulp-sassもbrowser-syncも、問題なくローカルにインストールできた。