How do I solve “Server terminated early with statu

2020-04-02 05:08发布

问题:

I’m using node 5.10.0 on this version of Linux

[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

I’m getting the below error when running my script (“Server terminated early with status 127”). I have verified that I can reach the URL in question using “wget”, so I can’t tell what else I need to make this thing work …

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

回答1:

In my case I was missing a Java Runtime environment (JRE). I'm running e2e tests with Selenium in a Debian-based docker image, hence apt-get install default-jre did the trick for me. It's a pity selenium doesn't give a more useful error message in this case.



回答2:

I had a similar issue where it was missing a shared library that I solved by symlinking libnss3.so:

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

If the first directory doesn't work for you, find with:

find /usr/lib/ -name libnss3* OR find /usr/lib64/ -name libnss3*

and replace accordingly.

It might also require an update, so try: yum update nss



回答3:

As suggested by other answers, the error message means you have unmet dependencies.

In my case of selenium e2e test, fixes are:

  1. apt-get install default-jre as mentioned by @Johannes
  2. apt-get -f install for a fix install
  3. apt-get install chromium-browser Make sure to install the correct version of chrome related to your chromedriver, e.g. chrome 60-62 for chromedriver 2.33
  4. Config webdriver to start chrome in 'headless' mode, as to avoid other unnecessary dependencies. In node it looks like:

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