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

Dav*_*ave 16 linux node.js selenium-chromedriver selenium-webdriver

我在这个版本的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
Run Code Online (Sandbox Code Playgroud)

运行我的脚本时出现以下错误("服务器提前终止,状态为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)
Run Code Online (Sandbox Code Playgroud)

Joh*_*lph 11

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


Sta*_*Luo 6

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

在我的硒 e2e 测试的情况下,修复是:

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

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


Rah*_*bub 2

我遇到了类似的问题,缺少共享库,我通过符号链接 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