我创建了一个项目,使用Apache和Git在DigitalOcean中配置服务器。
对于服务器上的init项目,我运行以下命令:
cd /var/repo
mkdir project-example.git && cd project-example.git
git init --bare
我使用以下代码设置文件post-receive
:
#!/bin/bash
git --work-tree=/var/temp/project-example --git-dir=/var/repo/project-example.git checkout -f
cd /var/temp/project-example
npm install
npm run build
rm -rf /var/www/project-example/*
mv -f /var/temp/project-example/build/* /var/www/project-example/
当我通过本地机器上的git推送到服务器远程时,发生以下错误:
remote: hooks/post-receive: line 4: npm: command not found
remote: hooks/post-receive: line 5: npm: command not found
但是,通过SSH访问服务器并执行命令:
# it works standard
cd /var/repo/project-example.git
source hooks/post-receive
系统服务器:Ubuntu 14.04
我通过nvm安装了节点。
答案 0 :(得分:3)
当git hook运行时,它不一定具有与通过SSH登录时相同的PATH变量集。在调用时,尝试在脚本中输入npm的完整路径;这应该解决问题。