[求助]请教一个问题,Nodejs在travis上跑测试的时候报错:spawn EACCES

发布于 1周前 作者 bupafengyu 来自 nodejs/Nestjs

[求助]请教一个问题,Nodejs在travis上跑测试的时候报错:spawn EACCES

学习 node 中,写了个跑本地 html 的工具,类似于 live-server

然后在 travis 上跑测试的时候报错了

4dERHJ.png

这两个测试用例是用来验证命令行功能的,使用起来大概是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(); }); }); …

本地跑测试的话是会通过的

请问这是文件访问权限的问题吗?如何解决呢?


2 回复

权限问题,要么用 sudo 去运行(不推荐),要么给 node 监听的文件夹读写权限 sudo chmod -R a+rwx


在 Travis CI 上使用 Node.js 运行测试时遇到 spawn EACCES 错误,通常是由于权限问题导致的。这个问题经常发生在尝试执行需要特定权限的命令或脚本时。以下是一些可能的解决步骤:

  1. 检查脚本权限: 确保你在 Travis CI 上运行的脚本或可执行文件具有执行权限。你可以在 .travis.yml 文件中添加命令来修改权限。

    before_script:
      - chmod +x path/to/your/script.sh
    
  2. 使用 sudo: 如果问题依旧存在,尝试使用 sudo 来运行命令(注意,Travis CI 的默认用户可能不是 root,所以使用 sudo 可能会要求配置 sudo 密码或无密码 sudo)。

    script:
      - sudo path/to/your/command
    

    但更推荐的做法是避免使用 sudo,因为它可能会带来额外的安全问题。

  3. 检查 Travis CI 配置: 确保 .travis.yml 文件中的配置正确无误,特别是环境变量和路径设置。

  4. 调试日志: 查看 Travis CI 的构建日志,寻找更具体的错误信息,这可能会帮助你定位问题。

  5. 依赖管理: 确保所有依赖都已正确安装,并且版本兼容。有时候,权限问题可能是由于依赖未正确安装导致的。

如果以上方法仍未解决问题,建议详细检查 Travis CI 的构建日志,或考虑在 Stack Overflow、GitHub Issues 等平台寻求更具体的帮助。

回到顶部