我正在编写一个脚本,该脚本在某一时刻启动一个简单的基于 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
脚本始终以?运行可能相关。