我如何解决"服务器提前终止状态127"在Linux上运行node.js时?

时间:2016-04-05 14:35:04

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

我在这个版本的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”来访问相关网址,因此我无法告诉我还需要做些什么让这件事工作......

[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)

5 个答案:

答案 0 :(得分:3)

在我的情况下,我错过了Java Runtime环境(JRE)。我在基于Debian的docker镜像中使用Selenium运行e2e测试,因此apt-get install default-jre为我做了诀窍。遗憾的是,在这种情况下,硒没有提供更有用的错误信息。

答案 1 :(得分:1)

我有一个类似的问题,它错过了我通过symlinking 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

答案 2 :(得分:1)

正如其他答案所示,错误消息表示您有未满足的依赖项。

在我的硒e2e测试案例中,修正案是:

    @Lohannes 提到的
  1. apt-get install default-jre
  2. apt-get -f install进行修复安装
  3. apt-get install chromium-browser请确保安装与您的chromedriver相关的正确的version铬合金,例如铬60-62为chromedriver 2.33
  4. 配置webdriver以启动chrome无头&#39;模式,以避免其他不必要的依赖。在节点中,它看起来像:
  5. const options = new chromeDriver.Options(); options.addArguments( 'headless', 'disable-gpu', ); new webdriver.Builder() .forBrowser('chrome') .setChromeOptions(options) .build();

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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