[求助]请教一个问题,Nodejs在travis上跑测试的时候报错:spawn EACCES
[求助]请教一个问题,Nodejs在travis上跑测试的时候报错:spawn EACCES
学习 node 中,写了个跑本地 html 的工具,类似于 live-server
然后在 travis 上跑测试的时候报错了
这两个测试用例是用来验证命令行功能的,使用起来大概是server --version
这样子
给这个工具的命令行参数加测试的时候,是读取编译后的 js 文件,然后用 child_process.execFile 来跑这个文件并添加参数,代码如下
...
var cmd = path.join(__dirname, "../lib", "serve.js");
var exec = require("child_process").execFile;
...
function exec_test(args, callback) {
if (process.platform === “win32”)
exec(process.execPath, [cmd].concat(args), opts, callback);
else exec(cmd, args, opts, callback);
}
describe(“command line usage”, function () {
it("–version", function (done) {
exec_test(["–version"], function (error, stdout, stdin) {
assert(!error, error);
assert(stdout.indexOf(“server”) !== -1, “version not found”);
done();
});
});
…
本地跑测试的话是会通过的
请问这是文件访问权限的问题吗?如何解决呢?
权限问题,要么用 sudo 去运行(不推荐),要么给 node 监听的文件夹读写权限 sudo chmod -R a+rwx
在 Travis CI 上使用 Node.js 运行测试时遇到 spawn EACCES
错误,通常是由于权限问题导致的。这个问题经常发生在尝试执行需要特定权限的命令或脚本时。以下是一些可能的解决步骤:
-
检查脚本权限: 确保你在 Travis CI 上运行的脚本或可执行文件具有执行权限。你可以在
.travis.yml
文件中添加命令来修改权限。before_script: - chmod +x path/to/your/script.sh
-
使用
sudo
: 如果问题依旧存在,尝试使用sudo
来运行命令(注意,Travis CI 的默认用户可能不是 root,所以使用sudo
可能会要求配置 sudo 密码或无密码 sudo)。script: - sudo path/to/your/command
但更推荐的做法是避免使用
sudo
,因为它可能会带来额外的安全问题。 -
检查 Travis CI 配置: 确保
.travis.yml
文件中的配置正确无误,特别是环境变量和路径设置。 -
调试日志: 查看 Travis CI 的构建日志,寻找更具体的错误信息,这可能会帮助你定位问题。
-
依赖管理: 确保所有依赖都已正确安装,并且版本兼容。有时候,权限问题可能是由于依赖未正确安装导致的。
如果以上方法仍未解决问题,建议详细检查 Travis CI 的构建日志,或考虑在 Stack Overflow、GitHub Issues 等平台寻求更具体的帮助。