最近开发一个 Node 的命令行程序,其中会用到 child_process.spawn 来创建子进程做一些事情。 本地跑通了测试之后,到了 Travis 的环境下发现子进程创建不成功,debug 到 CI 服务器上之后,发现报了下面这个错误:

spawn EACCES

查了一下这个错误,发现可能是因为创建子进程调用的文件权限不正确,由于我的项目中子进程的相关文件通过源代码编译生成,因此没有不在 git 的追踪中,也就无法直接控制文件权限设置。 于是就选择在 Travis 构建完项目,执行测试之前设置相关文件权限:

sudo chmod -R a+rwx folder/files

设置之后,子进程就可以正常创建了,这个问题比较容易被忽略。