LoginSignup
1
0

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-12-03

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を使った話

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0