execFile Node.js – 找不到Shell脚本

我试图使用node.js和Github webhooks自动部署我的项目。 我跟着这个教程 ,但我得到这个execFile函数错误:

{ [Error: spawn ENOENT] code: 'ENOENT', errno: 'ENOENT', syscall: 'spawn' } 

我检查了shell脚本(hook.sh)文件的位置和fs.exists函数说没关系。 我试图执行其他文件,而不是一个shell脚本,它的工作(或至less它发现该文件)。 所以这可能是bin / bash的某种问题。 我真的不知道。 shell脚本文件位于与hook.js文件相同的目录中(请参阅教程)。

我的虚拟主机是WebFaction。

我的build议是继续下面的步骤

  1. 通过ls -l检查hook.sh脚本的执行权限。 您可以尝试使用sudo chmod a+x <PATH TO MY HOOK.SH>临时设置执行权限all sudo chmod a+x <PATH TO MY HOOK.SH>
  2. 确保在这里使用了execFile('/path/to/hook.sh', execOptions, function(error, stdout, stderr)绝对path。如果它不工作,试着将它指向一些例如在文件系统上触摸某个文件的虚拟脚本。
  3. 如果没有上述提到的帮助。 通过运行以下命令set -x打开bash的debugging模式。 并检查shell是否开始执行hook.sh