node.jsの環境構築メモ
Yeomanを使ってみようと思って、Macにインストールされているnode.jsをすごい久しぶりに触ろうとしたらエラーが起きたので、nodebrewを使って再構築したメモ。
node.jsのアンインストール
まずはじめに、Macにインストールされているnode.jsをアップデートし、npmパッケージを入れていこうと思ったら、node.jsをアップデートした後にnpmコマンドが使えなくなってしまいました。node.jsをアップデートする前から使えてたかどうかは不明です。(かなり長い間使っていなかったので。)
$ node -v v0.8.16 $ n stable install : v0.12.2 mkdir : /usr/local/n/versions/0.12.2 fetch : http://nodejs.org/dist/v0.12.2/node-v0.12.2-darwin-x64.tar.gz installed : v0.12.2 $ node -v v0.12.2 $ npm module.js:338 throw err; ^ Error: Cannot find module 'are-we-there-yet' at Function.Module._resolveFilename (module.js:336:15) at Function.Module._load (module.js:278:25) at Module.require (module.js:365:17) at require (module.js:384:17) at Object.<anonymous> (/usr/local/Cellar/node/0.8.16/lib/node_modules/npm/node_modules/npmlog/log.js:2:16) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Module.require (module.js:365:17)
npmコマンドを叩くと上記のエラーが起きます。モジュールが足りないと言われるがそもそもnpmコマンドが使えないのでモジュールを入れる事ができませんでした。また、npmをアンインストールするにもnpmコマンドを使うので詰んでしまった。。
なので、node.jsから入れなおすことにしました。
ところで今使っているnode.jsはどうやって入れたものか?それがわからないと消し方もわからないのですが、まず一番ありそうなところで、Homebrewを確認してみます。
$ brew list node ...
brew経由でnodeが入っていた事は分かりましたが、フォルダ名が現在使っているバージョンとは違いました。これはアップデートする前のバージョンが表示されるのかもしれませんが、この時のログが流れてしまってもう確認できません。なんにせよもう必要がないのでアンインストールします。
$ brew uninstall node
もう一つの方法として、nodeをインストーラからインストールした場合の削除方法というのもありましたので、念のためこちらもやっておきます。また、あわせてnpmのグローバルでインストールしたパッケージも削除しました。手順は以下のサイトを参照しました。
http://whiskers.nukos.kitchen/2014/09/25/nodebrew.html
これでもまだnodeの実行モジュールが残っていてパスが通るので、手動で実行モジュールを削除しました。(たぶん正しい手順ではないです。)
$ which node /usr/local/bin/node $ sudo rm /usr/local/bin/node
nodebrewのインストール
nodebrewはnode.jsやio.jsのバージョン管理ツールです。Rubyでいうrbenvみたいなものですね。他にもnode.jsのためのバージョン管理ツールが色々とありますが、nodebrewが一番環境をクリーンに保てて良いというのを目にしたのでこれにしました。実際、使うのは~/.nodebrew
だけで、あとはパスを通すだけです。とってもクリーンですね!
インストール方法もこちらのサイトを参考にしたので、自分が改めて書くまででもないですね。
http://whiskers.nukos.kitchen/2014/09/25/nodebrew.html
基本的なコマンドだけメモしておきます。
- nodebrew ls-remote
- nodebrew install-binary [バージョン]
- nodebrew uninstall [バージョン]
- nodebrew list
- nodebrew use [バージョン]
nodebrew install [バージョン]
でもインストールできますが、ソースからコンパイルするため非常に時間がかかります。通常はinstall-binary
を使うといいですね。
参考
ちなみに、今から使うんだったらio.jsじゃない?って思ってちょっと調べてみたら、こんな記事が見つかりました。内容は記事を見ればわかるのでここには書きませんが、自分は特に最新機能が必要でない限りはnode.jsを使いつつ様子見しようと思います。
http://yosuke-furukawa.hatenablog.com/entry/2015/03/05/171527