私は単純なNode.jsベースのウェブサイトを起動するスクリプトを書いています。
cd ../ap-site/ && npm start
端末で上記のコマンドを実行すると問題はありませんが、スクリプトで実行すると次のような結果が表示されます。
/usr/bin/env: node: No such file or directory
私はそれを使用しています不揮発性現在のノードバージョンを管理したいので、nvm use 8.8.1
ファイルに追加して~/.bashrc
からスクリプトから直接ファイルをインポートしました。
source /home/rescue/.bashrc
cd ../ap-site/ && npm start
which npm
また、ターミナルで次のように生成されたパスを直接使用してみました。
cd ../ap-site/ && /home/rescue/.nvm/v8.8.1/bin/npm start
しかし、私は同じ結果を得ます。
状況をデバッグし、bashスクリプトでノードプロジェクトを実行する方法についてのアイデアはありますか?
答え1
質問と回答を早く投稿して申し訳ありません。しかし、これは誰かに役立つかもしれません。
bashをソーシングしている間はファイルにありますが、nvm
ロードされないようです.bashrc
。
.bashrc
スクリプトの上部から直接設定をインポートする代わりに、次の操作を行います。nvm
export NVM_DIR="/home/rescue/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
nvm use 8.8.1
これを行うと、npm
コマンドが機能し始めました。
.bashrc
同じ3行のコードが含まれているので、ソーシングが期待どおりに機能しない理由はまだわかりません。
sudo
スクリプトが常に?で実行されることが関連している可能性があります。