Как я могу решить, "Сервер завершен раньше со статусом 127" при запуске node.js в Linux?

Im, использующий node 5.10.0 в этой версии Linux

[[email protected] 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

Я получаю следующую ошибку при запуске my script ( "Сервер завершен со статусом 127" ). Я проверил, что могу связаться с указанным URL-адресом, используя "wget", поэтому я не могу сказать, что еще мне нужно, чтобы эта работа работала...

[[email protected] 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

В моем случае у меня отсутствовала среда Java Runtime (JRE). Я запускаю тесты e2e с Selenium в образке docker на основе Debian, поэтому apt-get install default-jre помогло. В этом случае жалкий селен не дает более полезного сообщения об ошибке.

Ответ 2

У меня была аналогичная проблема, когда у меня отсутствовала разделенная библиотека, которую я решил с помощью 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

Ответ 3

Как было предложено другими ответами, сообщение об ошибке означает, что у вас неудовлетворенные зависимости.

В моем случае теста selenium e2e исправления:

  • apt-get install default-jre как указано @Johannes
  • apt-get -f install для установки исправления
  • apt-get install chromium-browser Обязательно установите правильную версию хром, связанную с вашим хромированным рекордером, например. хром 60-62 для хромированного ребра 2.33
  • Сконфигурируйте webdriver, чтобы запустить chrome в режиме "безголовый", чтобы избежать других ненужных зависимостей. В node это выглядит так:

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