Quantcast
Viewing all articles
Browse latest Browse all 8892

pkg で node.js を入れたMacで、node.js を消さずに nodebrew + avn を入れようとしたらうまくいかなかったときのメモ

Node.js 7系以下が必要なプロジェクトがあり、node.js のバージョンを切り替える必要があったので nodebrew + avn を使うことにしたときのメモ。
うまくいかなかった時に試したことを一応自分用にメモしておくのがこの記事の目的なので、すっきりわかりやすい記事をご希望の場合は最終項の参考記事を参考にするのが良いかと思います。

1. 方法

前提

  • Mac
  • Node.js をインストーラーからインストール済み
  • nodebrew を homebrew でインストール済み

nodebrew と avn

  • nodebrew だけでも node.js のバージョンは切り替えられる
  • avn を使えば、プロジェクトのルートディレクトリに置いた .node-versionのバージョンに合わせて node.js のバージョンを切り替えてくれる

その他切り替える方法として anyenv (参考 https://www.to-r.net/media/anyenv/)というのもあるらしいです。

手順

  1. グローバルにavnとavn-nodebrewをインストール&セットアップする。
terminal
npm install-g avn avn-nodebrew
avn setup
  1. プロジェクトのルートディレクトリに .node-versionを作成する。 作成したファイルには使いたい node.js のバージョンを以下のようにセマンティックバージョニングで書く。
.node-version
v6.17.1
  1. ターミナルでプロジェクト内に cdで移動して、以下のように activatedが表示されていればOK。
terminal
avn activated v6.17.1 (avn-nodebrew v6.17.1)

2. Trouble Shooting

だいぶ完結に「1.」にまとめましたが、実際は結構時間がかかりました。
やったことで覚えていることを時系列に関係なくメモだけしておきます。

node -vをして確認したら切り替わってなかった

↑のようにバージョンが変わったように思ったけど、 node -vで念のためバージョンを確認すると変わっていなかった...。
とりあえず、 一旦全部削除してみようと思い、一からやり直してみた。

terminal
v10.17.0

pkg で入れた node.js を削除(ついでに npm も削除)

MacにpkgでインストールしたNode.jsをアンインストールする手順を参考に削除。
以下を一行ずつ実行していく。(>がでてきても次の行を>につづけてペーストしてenterを押す)

terminal
lsbom -f-l-s-pf /var/db/receipts/org.nodejs.node.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 も削除する場合は以下で。

terminal
sudo rm-rf ~/.npm

node.js、npm が削除されてるかどうかは以下のコマンドでチェック(バージョンがでてこなければOK)

terminal
node -v
npm -v

nodebrew を入れ直してみる

nodebrew を削除する

Nodebrew本体を削除する方法を参考に Finder or ターミナルから直接 .nodebrewディレクトリを削除。
(隠しファイルの表示方法はこちら

ただ、homebrew で nodebrew を入れた場合は上記じゃ消せないときがあるので、その場合は下記のコマンドで削除。

terminal
brew uninstall nodebrew

nodebrew を入れ直す

GitHubページの通り、curlコマンドでインストール。
(homebrew でも入れれますが、削除するときにちょっと面倒だったのでcurlで入れました)

terminal
curl -L git.io/nodebrew | perl - setup

インストールしたら、パスを通す。(GitHubページには .bashrc or .zshrcと書かれてます)
私は .bashrcに書きました。

export PATH=$HOME/.nodebrew/current/bin:$PATH

bashrcを更新しても、ターミナルを再起動しただけではシェルの設定が反映されないので、以下のコマンドを叩いて反映させる。

terminal
source ~/.bashrc
!!注意!!

上記を実行しただけだと
「PhpStormのTerminalでは nodebrew コマンドが使えるのに、App のターミナルで新しいタブを開いても nodebrew コマンドが使えない...」
という状況に陥りました。

これは実行系統によって読み込む設定ファイルが微妙に異なることが原因だそう。(両者のターミナルで読み込む設定が違ったみたい)
そこで、 .bashrcの更新内容が今後自動的に .bash_profileに反映されるようにするため、 .bash_profileに下記コマンドを追加するとどちらでも nodebrew コマンドが使えるようになりました。

.bash_profile
source ~/.bashrc

(↓あたりを参考に)
https://qiita.com/hiesiea/items/860c42a96b031f929b94
https://qiita.com/magicant/items/d3bb7ea1192e63fba850

avn could not activate node v6.17.1と出る

nodebrew に activate したい node.js がインストールされていないのが原因でした。

nodebrew にインストール済みのバージョンの確認

terminal
nodebrew ls

nodebrew にバージョンをインストールする

terminal
nodebrew install-binary 6.17.1

参考

avnのGitHubページ
Nodebrewとavnを使ってNode.jsのバージョン切り替えを自動化する
ディレクトリごとに異なるバージョンのnodeを使いたいのでavnを使った話


Viewing all articles
Browse latest Browse all 8892

Trending Articles