web-dev-qa-db-fra.com

Comment résoudre le problème "Le serveur s'est arrêté tôt avec le statut 127" lors de l'exécution de node.js sous Linux?

J'utilise le noeud 5.10.0 sur cette version de 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

Je reçois le message d'erreur ci-dessous lors de l'exécution de mon script («Le serveur s'est arrêté tôt avec le statut 127»). J'ai vérifié que je pouvais atteindre l'URL en question en utilisant "wget", donc je ne peux pas dire ce dont j'ai besoin pour que cette chose fonctionne ...

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

Dans mon cas, il me manquait un environnement Java Runtime (JRE). J'exécute des tests e2e avec Selenium dans une image de menu fixe basée sur Debian. C'est pourquoi apt-get install default-jre m'a tout préparé. Dommage, Selenium ne donne pas un message d'erreur plus utile dans ce cas. 

3
Johannes Rudolph

J'ai eu un problème similaire où il manquait une bibliothèque partagée que j'ai résolue en liant symboliquement libnss3.so:

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

Si le premier répertoire ne fonctionne pas pour vous, recherchez avec:

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

et remplacez en conséquence.

Cela pourrait aussi nécessiter une mise à jour, alors essayez: yum update nss

1
Rahat Mahbub

Comme suggéré par d'autres réponses, le message d'erreur signifie que vous avez des dépendances non satisfaites.

Dans mon cas de test Selenium e2e, les correctifs sont les suivants:

  1. apt-get install default-jre mentionné par @Johannes
  2. apt-get -f install pour une installation de correctif
  3. apt-get install chromium-browser Assurez-vous d’installer la version chrome correspondante à votre lecteur chromed, par exemple. chrome 60-62 pour conducteur chromé 2.33
  4. Confirmez que WebDriver lance Chrome en mode 'sans tête', afin d'éviter d'autres dépendances inutiles. Dans le noeud, cela ressemble à:

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

0
Stanley Luo