如何解决Travis CI上出现的Uncaught Error: spawn ... EACCES错误
问题解决方法
错误根因
你的配置存在两个核心问题导致权限报错仍然存在:
- 配置的
chmod +x ./只会给当前目录赋予进入权限,不会给目标可执行文件./lib/serve.js添加执行权限 - Linux环境下直接执行JS文件还要求文件头部有对应的node解释器声明(shebang)
具体解决方案
- 方案一:修正权限配置+补全shebang
- 修改Travis配置的before_install段,改为给目标文件单独加执行权限:
before_install: - chmod +x ./lib/serve.js- 检查
serve.js源码第一行是否添加了shebang声明,没有的话补上即可:
#!/usr/bin/env node // 剩余原有serve.js代码 - 方案二(更稳妥,跨平台兼容无需处理权限)
直接修改测试代码,所有平台都统一用node解释器执行目标脚本,完全规避执行权限和shebang的问题,修改后的exec_test函数如下:function exec_test(args, callback) { exec(process.execPath, [cmd].concat(args), opts, callback); } - 额外检查项
确认yarn build执行完成后,serve.js确实被输出到了代码中指定的../lib路径下,避免文件不存在导致的类似报错。
内容的提问来源于stack exchange,提问作者Livio
相关产品推荐
相关产品推荐

