1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Node.js のバージョン管理を nodebrew で行った際、VS Code に反映されなかった

Last updated at Posted at 2020-06-18

Prologue

稼働しているプロジェクトで node.js のバージョンが低く、パッケージがインストールできない問題が発生しました。
単純にバージョンをあげてもよかったのですが、以前 node.js のバージョンがチーム内で異なっていて検証がうまく進まなかったことがあったため、これを期に nodebrew で管理することにしました。
インストール自体はそれなりにスムーズにできたのですが、VS Code で使用した際にエラーが出たため、その辺りも含めて記載しておきます。
内容は Try&Error のため、不要な内容も入っているのでご注意ください。
最後にスムーズにいく流れを記載しています。(-> まとめ)

環境

  • macOS: 10.15.4

  • terminal: iTerm

  • VS Code 使用

  • Project概要

    • パッケージマネージャ: yarn

参考: https://github.com/hokaccha/nodebrew

homebrew がインストールされていることを確認

以下は全て iTerm で作業していきます。

brew -v
Homebrew 2.4.0 // バージョン情報が表示される

yarn と node のアンインストール

brew uninstall node
brew uninstall yarn

削除されていることを確認

brew ls
// node と yarn がなければ成功

nodebrew のインストール

brew install nodebrew

インストールされていることを確認

nodebrew -v
nodebrew 1.0.1 // バージョン情報が表示される

nodebrew を使って node.js をインストール

nodebrew でインストールできるバージョンは以下で確認できます。

nodebrew ls-remote

今回は最新の安定版を使いたかったので、以下をインストール。
参考: https://nodejs.org/ja/

nodebrew install v12.18.0

余談ですが、この記事を書いているほんの数時間前(インストールは終わっていた)、v12.18.1 がリリースされていました。こういうことがままあるので面白いなと思います。

インストールされていることを確認。

nodebrew ls

v12.18.0 // インストールしたバージョンがあることを確認

インストールしたバージョンを使うよう設定します。

nodebrew use v12.18.0

設定されていることを確認します。

node -v
v10.16.0 

反映されていなかったので、以下を対応

以下のコマンドはもうないかもしれないので、必要ないかもしれません。
実行せずにできていたらフィードバックお願いします。(->追記)

nodebrew setup

node が他にないか確認します。

which node

パッケージがあったため、以下のコマンドで削除します。
削除する際には自己責任でお願いします。

rm -rf /usr/local/bin/node

それでも反映されないため、環境PATH の設定を確認、書いていなかったため追記します。

vi ~/.bash_profile

export PATH=$HOME/.nodebrew/current/bin:$PATH // .bash_profileに追記

こちらに関しては nodebrew をインストールした際に、きちんと書かれていました。読み飛ばしていましたね。
実際書く際には、インストール時の内容を読んで、そちらを記載してください。

ファイルを更新します。

source ~/.bash_profile

node -v でバージョンが変わっていることを確認します。

最後に yarn をインストール。

brew install yarn

zsh を使用していたので、設定内容を移動します。

cp -a ~/.bash_profile ~/.zprofile

内容の確認とファイルの更新を行います。

vi .zprofile
source .zprofile

VS Code で yarn コマンド が使えない

ここまでで問題なく iTerm で yarnnode も使えていたのですが、VS Code では node -v すらも使えない、という事象が起こりました。

エラー内容

env: node: No such file or directory

試しにグローバルに node.js をインストールすると使えます。でもそれだと結局バージョン管理ができないため、どうしても解決したい。

node 周りをもう一度きれいにしてみる。

yarn をインストールすると一緒に node もインストールされるとのことなので、一度 yarn をアンインストールします。
アンインストールする前に brew ls で確認すると、 yarn と一緒に node もいることが確認できるので、気になる方は確認してみてください。

brew uninstall yarn
brew uninstall node
brew ls
// node と yarn がないことを確認

次に、 yarn をインストールする際に node は無視するよう、以下のコマンドを実行しましたが、エラーが出ました。

brew install yarn --ignore-dependencies
// 略

Warning: --ignore-dependencies is an unsupported Homebrew developer flag!
Adjust your PATH to put any preferred versions of applications earlier in the
PATH rather than using this unsupported flag!

==> Downloading https://yarnpkg.com/downloads/1.22.4/yarn-v1.22.4.tar.gz
Already downloaded: /Users/mi***/Library/Caches/Homebrew/downloads/42**--yarn-v1.22.4.tar.gz
Error: An exception occurred within a child process:
  RuntimeError: /usr/local/opt/node not present or broken
Please reinstall node. Sorry :(

node が存在しないか壊れている?とのことなのですが、解決策が見つからないため、一度 yarnnode ありでインストールし、その後 node のみをアンインストールしてみました。

brew install yarn
brew uninstall --ignore-dependencies node
brew ls
icu4c		nodebrew	yarn

brew lsnode がないことを確認。

検証のためにインストールしたnodeパッケージを再度削除。
削除する際は自己責任でお願いします。

rm -rf /usr/local/bin/node
which node
/Users/mi**/.nodebrew/current/bin/node

node.nodebrew 以下にしかないことが確認できました。

ここまで書いてきて、ふと環境変数PATHとは?また、それを記載するファイルがあっているのか疑問に思い調べてみると、zsh の場合 .zshrc に記載するのが正しいそうです。

ファイルを再度移動させます。

cp -a  ~/.zprofile ~/.zshrc
source ~/.zshrc

整理するために、以下のファイルを削除しました。
私の場合、中身は今回のために作ったものなので空っぽであることを確認してから行います。
他にも記載がある場合には、自己責任で行ってください。

rm .bash_profile
rm .zprofile
ls -a // ファイルが存在しないことを確認

ここまで書いても、 VS Code では node が反応しません。
環境変数PATHについてこちらの記事がわかりやすくて読み進めていたら、気になる言葉が...

参考: https://qiita.com/fuwamaki/items/3d8af42cf7abee760a81

exportで操作した環境変数は、設定したTerminalでだけにしか反映されません。

そのために .zshrc に環境変数PATHを記載をする。 .zshrc は再起動や更新のタイミングで読み込まれる...

今回、プロジェクトの作業中にこれらの対応を行っていたので、VS Codeは開いたまま、iTerm で nodebrew の対応を行っていました。
つまり、VS Code のターミナルは一度閉じるか更新するかしないと環境変数PATH が使えないということですね。

VS Code の Terminal で以下の手順で対応。

vi .zshrc 
source .zshrc
node -v
v11.11.0 // 検証のためもう一つインストールしていたためこれでOK
yarn

プロジェクトごとに複数 VS Code を開いていたため、もう一つは一度閉じて再起動してみましたが、きちんと反映されていました。

その後念のため iTerm にて、 nodebrew でバージョンを変更。VS Code の方は開いたまま node -v で確認するときちんとバージョンが変わっていることが確認できました。

追記: nodebrew setup

install した node を格納しておく .nodebrew/src ディレクトリを作成するコマンドのようです。
この対応をしないと、以下のようなエラーが出ました。

nodebrew install v12.18.2

Fetching: https://nodejs.org/dist/v12.18.2/node-v12.18.2-darwin-x64.tar.gz
Warning: Failed to create the file 
Warning: /Users/mi**/.nodebrew/src/v12.18.2/node-v12.18.2-darwin-x64.tar.gz
Warning: : No such file or directory

curl: (23) Failed writing body (0 != 979)
download failed: https://nodejs.org/dist/v12.18.2/node-v12.18.2-darwin-x64.tar.gz

nodebrew setup を実行すると、 .nodebrew/src が作成され、無事インストールすることができました。

まとめ

Try&Error で時系列的に書いてきましたが、手順をまとめると以下になります。

  1. homebrew で yarnnode を削除する。
  2. which node で他に node を使っていないか確認し、必要があれば削除する。
  3. nodebrew をインストールする。
  4. 使っているPCに応じて、環境変数PATHを設定し、Teminal を再起動するか ファイルを更新する。
  5. .nodebrew/src を実行し、ディレクトリを作成する。
  6. nodebrew で使いたいバージョンの node.js をインストールし、それを使用するようコマンドを実行する。
  7. yarn を再インストールする。この際、依存している node はインストールされないよう気を付ける。
  8. 他に使用するTerminal があれば、一度再起動するか、環境変数PATH を追記したファイルを Terminal ごとに更新する。

Epilogue

環境変数PATH を設定しなくても nodebrew が動いたためそのまま進めていたことがまず敗因でした。反省。
また、 Terminal ごとに .zshrc が読み込まれることや環境変数PATH, node の取り扱いについては逆に複数の Terminal を操作していなかったら気づけなかったと思うので、とても痛い目を見ましたが、怪我の巧妙とできてよかったです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?