Linux/AWSにてNode.js環境を構築した時。
このようなエラーに遭遇しました。
1 2 |
$ node -v -bash: node: command not found |
どうしてかnodeがコマンドとして認識されません。
その解決に少しだけ苦戦してしまったので、
後学のためにLinux・AWSでの解決策を残します。
このページの目次
Linux(AWS)にnvm/nodeをインストールした
環境はAWS EC2インスタンスを用意し、
OSとしてAmazon Linuxを使ってました。
Node.js環境構築は次のqiitaを参考にしました。
▼ AWS EC2でNodeを動作させる
▼ nvm/npm/nodeなどをインストールした
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
## GitHubからnvmをクローンする $ git clone https://github.com/creationix/nvm.git ~/.nvm ## nvmへのパスを通しておく $ source ~/.nvm/nvm.sh ## nvmコマンドのパス設定(詳細は省略) $ vi .bash_profile ## 任意verのnode.jsをインストール $ nvm install 14.16.1 ## 使用するnodeバージョンの指定 $ nvm use v14.16.1 ## バージョン表示。ここまではOK! $ node -v v14.16.1 |
詳細はqiita記事を見てください。
とても分かりやすく解説されてます。
再ログイン後に"node: command not found"発生
それで困ったのが再ログインした時です。
▼ nodeがコマンドとして認識されない…
1 2 |
$ node -v -bash: node: command not found |
先ほど .bash_profile に設定したからnvmコマンドは認識されます。ただnodeコマンドは再起動時に自動認識されませんでした。
前述のqiita記事はその手順が抜けてます。
.bash_profileからnodeのパスを通すが…
そしてググると次の解決策が一般的みたいです。
▼ 初めにnodeコマンドのパス調べる
1 2 |
$ which node ~/.nvm/versions/node/v14.16.1/bin/node |
▼ .bash_profileを編集する
1 2 3 4 5 |
## bashの場合 : $ vim ~/.bash_profile ## zshの場合 : ## $ vim ~/.zshrc |
▼ そこでPATHの定義を探す
1 2 |
## 以下のような記述を探す PATH=$PATH:$HOME/.local/bin:$HOME/bin |
このPATHはコロン区切りで区切られているので、 PATH=$PATH:$HOME/.local/bin:$HOME/bin:$HOME/.nvm/versions/node/v14.16.1/bin/node みたいに末尾にnodeパスを追加してあげてください。
▼ そのあと環境設定を反映させる
1 2 3 4 5 |
## bashの場合 : # source ~/.bash_profile ## zshの場合 : ## $ source ~/.zshrc |
自分の環境はAmazon Linuxだったので、.bash_profileというログイン時に読み込まれる環境設定ファイルを編集しました。
.bash_profileが再起動後に反映されない…
上記の設定をして再ログインしたものの…
やっぱりnodeコマンドが認識されません。
1 2 |
$ node -v -bash: node: command not found |
パスは間違ってないのに何がダメだったのか…
この方法に見切りをつけて別の方法を探すことに
nvm alias の設定をしたら解決した!
そこで試したのがnvmでのデフォルトバージョンの設定
次のようなコマンドでデフォルト設定しました。
▼ nvm alias から設定可能
1 2 |
$ nvm alias default v14.16.1 default -> v14.16.1 |
▼ そして再ログインしてnodeを叩くと…
1 2 3 4 |
$ node Welcome to Node.js v14.16.1. Type ".help" for more information. > |
無事nodeコマンドが認識されました!
.bash_profileでnodeバージョン指定でもOK
あと解決策としてはもう1つあります。
それは.bash_profileに以下を記述することです。
▼ 使用したいnvmでnodeバージョンを指定する
1 2 |
## 再ログイン時にnodeバージョン指定 nvm use v14.16.1 |
この方法は複数バージョンの切り替え時に便利かも
解決したのはいいけど、.bash_profileでパスが通らなかったのは何故なのか…そこは考えても分からないので、上記の代替策でどうにかしました。
どちらかの方法を使えば解決します。
以上、Linuxdでnodeが認識されない問題の解決策でした。