最近のフロント開発は、色々なライブラリを駆使して作るのが当たり前になってきました。
jQueryとjQueryのライブラリだけあれば良かった時代ではもうありませんね…
さて、
最近のjsのライブラリのドキュメントでは、npmからインストールする説明がされている事が多いです。
しかし、いざインストールしようとすると、npmが動かず原因を探っていったらnode本体が原因と言う事があります。
今回は、そんな時に役立つ情報をお伝えします。
この記事で得られる事
- 「nodeのバージョンが上手く変えられない」状態からの復帰方法がわかる。
- nodebrewのインストール手順がわかる。
イントロダクション
この記事の目的
ローカルマシンにnodebrewをインストールして、最新版のnodeを動かせるようにする事です。
そのために、下記の手順で作業していきます。
もし、インストールから始めたい場合は「homebrew版のnodebrewを再インストール」から見始めてください。
- npmのアンイストール
- homebrew版のnodeをアンインストール
- ソース版のnodeをアンインストール
- 残骸ファイルを削除
- homebrew版のnodebrewを再インストール
- nodebrewで最新版のnodeを再インストール
ちなみに、今回「nodebrew」選んだ理由は、機能ではなく、検索結果で2017年の記事で割と使われていただけです。
特に、技術的な理由はありませんので悪しからず。
前提条件
- macに導入することを想定しています。
windowsの場合、手順が違うところがあるかもしれませんがご了承ください。 - 「homebrew版のnodebrewを再インストール」でも簡単に説明しますが、homebrewは既にインストールしているものとして進めます。
経緯
方法だけ見たい場合は次まで飛ばしてください。
久しぶりに早速フロントエンドの実装を始めようとしたところでした。
vue.jsをインストールするために、npm install vue
を実行するもエラーでインストールできませんでした。
原因は、nodeのバージョンが古いためでした。
確認して見ると、nodeのバージョンがかなり前の状態です。
$ node -v
v5.10.1
nodeのバージョンを管理する、「n」モジュールをいれていたのを思い出して、バージョンを変えて見るも、変わりません。
$ n latest
$ node -v
v5.10.1
ルートディレクトリの中身や、homebrewのインストールリストを確認した結果、homebrewでnodeのバージョン管理のパッケージが複数存在することがわかりました。
- nvm
- n
- nodebrew
バージョンが管理をしているはずが、全く管理されていなかったのです。
さらに、nodeが既に複数の方法でインストールされていてもはや何が何だがわからない状態になっていました。
- ソースからインストールしたnode
- homebrewからインストールしたnode
- nodebrewからインストールしたnode
こんな状態でしたので、nodeが満足に動く状態ではありませんでした。
そのため、一旦まっさらにしてnodeを入れ直すことにしました。
それでは、次の項から実際の作業説明に入ります。
npmのアンイストール
brew等でnodeを直接インストールした場合、おそらくルートディレクトリ配下に.npmが作られていると思います。
nodeでインストールしたnpmをアンインストールします。
$ npm uninstall -g npm $ rm -rf .npm \ node_modules
私の場合、ルートディレクトリでnpm install
を実行してしまったので、node_modulesが出来ていました。
このディレクトリもいらないので、一緒に削除してしまいます。
homebrew版のnodeをアンインストール
brewでインストールしたので、brewでアンインストールします。
$ brew uninstall node
ソース版のnodeをアンインストール
ソース版を入れていた場合、brewでnodeをアンイストールしてもnodeがまだ動いているはずです。
$ node -v
v5.10.1
その場合、nodeがインストールされた場所を特定してnodeを削除します。
$ which node /usr/local/bin/node $ rm -rf /usr/local/bin/node \ node_modules
bash_profile(もしくは、bashrc)にパスを通している場合は、パスも削除します。
参考ページ
参考ページでは、何やらDBも消しているようです。
私の場合は、お恥ずかしながら…確認せず流れで実行してしまい、このファイルの真意を理解していません。
もし、上記で支障が出た場合、下記のコマンドを実行して見てください。
$ 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.*
残骸ファイルを削除
npmを消しても、バージョン管理でインストールしたディレクトリは残っています。 残っている、下記に関するディレクトリを削除します。
- n
- nvm
- nodebrew
以降の説明は、インストールの仕方で変わります。
完全に一致しない場合は、参考程度にお読みください。
「nodebrew」と「nvm」のバージョン管理ディレクトリを削除
「nodebrew」と「nvm」は、ユーザーのルートディレクトリ配下にありました。
下記のコマンドで、nodeの履歴ファイルと一緒に削除します。
$ cd <userディレクトリ> $ rm -rf .nvm \ .nodebrew \ .node_repl_history
node_repl_historyとは
nodeのコマンド履歴が保存されるようです。
REPL | Node.js v9.4.0 Documentation
「n」のバージョン管理ディレクトリを削除
nだけ、ソース版のnodeでいれたようなので、usr/local配下に作られていました。 上記と同じように削除します。
$ cd /usr/local $ rm -rf n
npmでインストールしたモジュールにパスを通している場合、このファイルを消すことでエラーが発生します。
bash_profile(もしくは、bashrc)にパスを通している場合は、パスも削除します。
homebrew版のnodebrewを再インストール
上記まで行えば、nodeもnpmも実行できない状態になるかと思います。
$ node -v -bash: node: command not found $ npm -v -bash: npm: command not found
改めて、nodebrewをインストールして、最新版のnodeをインストールします。
homebrewをインストール
まだインストールしていない方を想定した説明です。
「Homebrew」は、macOS自体のパッケージマネージャです。
説明は割愛しますが、インストールは下記のコマンドで実行できます。
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
参考
homebrewでnodebrewをインストール
改めて説明しますと、nodebrewはnodeのバージョン管理パッケージです。
まず、homebrewでnodebrewをインストールします。
$ brew update $ brew install nodebrew ... You need to manually run setup_dirs to create directories required by nodebrew: /usr/local/opt/nodebrew/bin/nodebrew setup_dirs Add path: export PATH=$HOME/.nodebrew/current/bin:$PATH To use Homebrew\'s directories rather than ~/.nodebrew add to your profile: export NODEBREW_ROOT=/usr/local/var/nodebrew Bash completion has been installed to: /usr/local/etc/bash_completion.d zsh completions have been installed to: /usr/local/share/zsh/site-functions ==> Summary 🍺 /usr/local/Cellar/nodebrew/0.9.8: 8 files, 38.3KB, built in 4 seconds
実行すると、インストール後の設定方法が表示されます。
nodebrewのバージョン管理ディレクトリ作成
バージョンを管理するためのディレクトリを作ります。
mkdirではなく、/usr/local/opt/nodebrew/bin/nodebrew setup_dirs
から実行してください。
$ cd <ルートディレクトリ> $ /usr/local/opt/nodebrew/bin/nodebrew setup_dirs $ ls ... .nodebrew ...
バージョンの管理ディレクトリにパスを通す
.bashrcのcurrentディレクトリにシンボリックリンクを貼る事で、任意のバージョンに変えているようです。
nodebrewのインストール時に表示された設定方法に沿って.bashrcに下記を設定します。
.bashrc
export PATH=$HOME/.nodebrew/current/bin:$PATH
nodebrewで最新版のnodeを再インストール
改めて、nodebrewで最新版のnodeをインストールします。
$ nodebrew install-binary latest <nodeのパッケージのインストールが始まります。> $ nodebrew list v9.4.0 current: none
実行すると、v9.4.0(2018/1時点での最新版)がインストールされます。
このままだと、まだ使用するnodeが指定されていません。
次のコマンドで、最新版のnodeを有効にします。
$ nodebrew use <インストールしたバージョン> $ node -v v9.4.0
nodeのバージョンを確認すると、実行できている事が確認できます。
以上で、nodeの再インストールは終了です。
いかがでしたでしょうか?
nodeに慣れていなかった当時は、使うだけで手いっぱいで環境の整理はできていませんでした。
そのツケが今巡ってきたのかもしれません。
これを教訓に、理解せずツールを導入しないようにしないといけないと思う今日この頃です。
- 作者: 斉藤祐也,水野隼登,谷拓樹,菅原のびすけ,林優一,古沢宏太
- 出版社/メーカー: マイナビ出版
- 発売日: 2016/01/28
- メディア: Kindle版
- この商品を含むブログを見る