【问题标题】:How do I solve "Server terminated early with status 127" when running node.js on Linux?在 Linux 上运行 node.js 时,如何解决“服务器提前终止,状态为 127”?
【发布时间】:2016-04-05 14:35:04
【问题描述】:

我在这个版本的 Linux 上使用节点 5.10.0

[davea@mydevbox mydir]$ uname -a
Linux mydevbox.mydomain.com 7.3.8-25.26.amzn1.x86_64 #1 SMP Wed Mar 16 17:15:34 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

我在运行脚本时遇到以下错误(“服务器提前终止,状态为 127”)。我已经验证我可以使用“wget”访问相关的 URL,所以我不知道我还需要什么才能让这个东西工作......

[davea@mydevbox mydir]$ node myscript.js 
Validation Complete
/home/davea/node_modules/selenium-webdriver/lib/promise.js:654
    throw error;
    ^

Error: Server terminated early with status 127
    at Error (native)
    at /home/davea/node_modules/selenium-webdriver/remote/index.js:242:20
    at ManagedPromise.invokeCallback_ (/home/davea/node_modules/selenium-webdriver/lib/promise.js:1343:14)
    at TaskQueue.execute_ (/home/davea/node_modules/selenium-webdriver/lib/promise.js:2868:14)
    at TaskQueue.executeNext_ (/home/davea/node_modules/selenium-webdriver/lib/promise.js:2851:21)
    at /home/davea/node_modules/selenium-webdriver/lib/promise.js:2730:27
    at /home/davea/node_modules/selenium-webdriver/lib/promise.js:639:7
    at process._tickCallback (internal/process/next_tick.js:103:7)
From: Task: WebDriver.createSession()
    at acquireSession (/home/davea/node_modules/selenium-webdriver/lib/webdriver.js:107:22)
    at Function.createSession (/home/davea/node_modules/selenium-webdriver/lib/webdriver.js:337:12)
    at Driver (/home/davea/node_modules/selenium-webdriver/chrome.js:778:38)
    at Builder.build (/home/davea/node_modules/selenium-webdriver/builder.js:464:16)
    at Object.<anonymous> (/home/davea/mydir/js/Optimus.js:14:4)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
From: Task: WebDriver.navigate().to(http://localhost:8081/myproject)
    at Driver.schedule (/home/davea/node_modules/selenium-webdriver/lib/webdriver.js:386:17)
    at Navigation.to (/home/davea/node_modules/selenium-webdriver/lib/webdriver.js:1029:25)
    at Driver.get (/home/davea/node_modules/selenium-webdriver/lib/webdriver.js:797:28)
    at Object.exports.Login.Page (/home/davea/mydir/js/Optimus.js:505:16)
    at Object.exports.smokeTest (/home/davea/mydir/js/Optimus.js:2442:19)
    at Object.<anonymous> (/home/davea/mydir/SkyNet.js:13:6)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)

【问题讨论】:

  • 退出代码 127 通常意味着找不到程序(或者可能找不到它所依赖的共享库)。你确定chrome浏览器/驱动的路径是正确的吗?
  • 我的 chromedriver 与我的脚本位于同一目录级别。此外,当我回显 $PATH 我有“/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/ dalvarado/bin:/usr/lib/chromedriver" 所以如果它需要在其他地方,我很想知道在哪里。

标签: linux node.js selenium-webdriver selenium-chromedriver


【解决方案1】:

就我而言,我缺少 Java 运行时环境 (JRE)。我在基于 Debian 的 docker 映像中使用 Selenium 运行 e2e 测试,因此 apt-get install default-jre 为我做了这个伎俩。遗憾的是 selenium 在这种情况下没有给出更有用的错误信息。

【讨论】:

    【解决方案2】:

    正如其他答案所建议的,错误消息意味着您有未满足的依赖关系。

    在我的 selenium e2e 测试中,修复是:

    1. @Johannes 提到的apt-get install default-jre
    2. apt-get -f install 用于修复安装
    3. apt-get install chromium-browser 确保安装正确的version 与您的 chromedriver 相关的 chrome,例如chromedriver 2.33 的 chrome 60-62
    4. 配置 webdriver 以“headless”模式启动 chrome,以避免其他不必要的依赖。在节点中它看起来像:

    const options = new chromeDriver.Options(); options.addArguments( 'headless', 'disable-gpu', ); new webdriver.Builder() .forBrowser('chrome') .setChromeOptions(options) .build();

    【讨论】:

    【解决方案3】:

    我有一个类似的问题,它缺少我通过符号链接 libnss3.so 解决的共享库:

    ln -s /usr/lib/x86_64-linux-gnu/libnss3.so /usr/lib/libnss3.so

    如果第一个目录不适合您,请查找:

    find /usr/lib/ -name libnss3* 或者 find /usr/lib64/ -name libnss3*

    并相应地替换。

    它可能还需要更新,因此请尝试: yum update nss

    【讨论】:

    • 我运行了“yum update nss”,然后运行了您列出的第一个命令,但运行该命令后,我得到了错误,“ln: failed to create symbolic link '/usr/lib/libnss3 .so': 文件存在”
    • 你有没有试过 selenium,现在文件已经存在了?如果它仍然不起作用,那么您并没有错过 libnss3 而是我不知道的其他东西
    • 鉴于我从您的建议中尝试过的问题,我确实在我的问题中遇到了同样的错误。
    【解决方案4】:

    我使用的是基于 node.js 的 selenium 脚本,并通过使用命令 curl https://intoli.com/install-google-chrome.sh | bash 手动安装 google chrome 解决了这个问题

    这对我有用。请试一试。谢谢。

    【讨论】:

      【解决方案5】:

      我遇到了同样的问题。我在 Ubuntu 中有不同版本的 chromedriver 和 google-chrome-stable 包。我通过google-chrome-stable --version CLI 命令检查了 chrome 版本。然后从这里下载合适的 chromedriver:http://chromedriver.storage.googleapis.com/index.html。将其复制到 /usr/bin/local 并为该文件设置 777 权限。一切都开始工作了。

      【讨论】:

        猜你喜欢
        • 2022-06-15
        • 1970-01-01
        • 2013-01-19
        • 1970-01-01
        • 2021-03-22
        • 2012-12-28
        • 1970-01-01
        • 2013-09-20
        • 1970-01-01
        相关资源
        最近更新 更多