2016-04-05 9 views
14

Sto usando nodo 5.10.0 su questa versione di LinuxCome risolvere "Server terminato all'inizio dello stato 127" quando si esegue node.js su 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 

sto ottenendo l'errore sotto quando si esegue il mio script (“Server chiuso anticipatamente lo stato 127”). Ho verificato che posso raggiungere l'URL in questione usando “wget”, quindi non posso dire che cosa ho bisogno di fare questo lavoro cosa ...

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

un codice di uscita di 127 significa che in genere il programma non è stato trovato (o forse una libreria condivisa dipende non è stato trovato). Sei sicuro che il percorso del browser/driver di Chrome sia corretto? – mscdex

+0

Ho il chromedriver allo stesso livello di directory del mio script. Inoltre, quando echo $ PATH ho "/ usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/opt/aws/bin:/home/dalvarado/bin:/usr/lib/chromedriver "quindi se dovesse essere altrove, mi piacerebbe sapere dove. – Dave

risposta

1

ho avuto un problema simile in cui mancava un condiviso libreria che ho risolto con un collegamento simbolico libnss3.so:

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

Se il primo elenco non funziona per voi, trovare con:

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

e sostituire di conseguenza.

Potrebbe anche richiedere un aggiornamento, in modo da provare: yum update nss

+0

Ho eseguito "yum update nss" e ho eseguito il primo comando elencato, ma dopo aver eseguito quel comando, ho ricevuto l'errore "ln: impossibile creare il collegamento simbolico '/usr/lib/libnss3.so': File esiste" – Dave

+0

Hai provato il selenio in seguito, ora che il file esiste? Se continua a non funzionare, allora non ti manca la libnss3 ma qualcos'altro che non conosco –

+0

Ricevo lo stesso errore nella mia domanda dato quello che ho provato dal tuo suggerimento. – Dave

2

Nel mio caso mi mancava un ambiente Java Runtime (JRE). Sto eseguendo test di e2e con Selenium in un'immagine docker basata su Debian, quindi il trucco per me è stato il apt-get install default-jre. È un peccato che il selenio non fornisca un messaggio di errore più utile in questo caso.

0

Come suggerito da altre risposte, il messaggio di errore indica che ci sono delle dipendenze non soddisfatte.

Nel mio caso di test di e2e selenio, correzioni sono:

  1. apt-get install default-jre come menzionato da @Johannes
  2. apt-get -f install per una correzione installare
  3. apt-get install chromium-browser Assicurarsi di installare il corretto version di Chrome relative a il tuo chromedriver, ad es chrome 60-62 per chromedriver 2.33
  4. Web driver di configurazione per avviare Chrome in modalità 'headless', in modo da evitare altre dipendenze non necessarie. Nel nodo sembra:

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

Problemi correlati