我知道问题所在,但不知道如何解决。我的问题是,当我运行脚本
post-receive
时,出现错误 env: node: No such file or directory
。
我认为这可能是因为它是一个非交互式外壳,我应该更改
$PATH
,但我还不够了解,不知道我需要做什么。当我获取文件时,npm
工作没有任何问题。仅当我远程调用其他地方的脚本时才会发生。
我正在使用 homebrew、nodev8 和 postgres。我也有nvm管理节点。
这是我的脚本:
#!/usr/bin/env bash
. $NVM_DIR/nvm.sh
echo 'post-receive: Triggered.'
cd /Users/david/Development/abba/live/404
echo 'post-receive: git check out...'
git --git-dir=/Users/david/Development/abba/404.git --work-tree=/Users/david/Development/abba/live/404 checkout master -f
/Users/david/.nvm/v8.15.0/bin/npm install && echo 'post-receive: -> done.'
环境:
which node
# /Users/david/.nvm/v8.15.0/bin/node
echo $PATH
# /Users/david/.nvm/v8.15.0/bin:/usr/local/opt/node@8/bin:/usr/local/opt/node@8/bin:/usr/local/opt/node@8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/opt/node@8/bin:/usr/local/opt/node@8/bin
.bash_profile
:
export PATH="/usr/local/opt/node@8/bin:"
export NVM_DIR="/Users/david/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
在尝试让 git post-receive hook 触发构建步骤时,我遇到了同样的问题。就我而言,我通过将节点二进制文件符号链接到 /usr/bin/folder
解决了这个问题ln -s `which node` /usr/bin/node
我发现了一个 github 问题,这里有类似的错误:https://github.com/animetosho/Nyuu/issues/14。
在那期他们使用了
ln -s /usr/bin/nodejs /usr/bin/node