2017-11-10 1 views
2

Ich versuche, den Google Chrome Puppenspieler in der Predix-Web-Starter-App zu verwenden. Wenn ich den Code lokal unter Windows ausführe, läuft er einwandfrei. Nachdem ich es zu Predix geschoben habe, und wenn ich den Teil ausführe, der den Puppeneer-Code enthält, führt dies zu einem Fehler. Es scheint einige fehlende Bibliotheksprobleme zu geben (nicht sicher was). Kurz gesagt, wie kann ich Puppenspieler auf Predix laufen lassen?Fehler beim Drücken der Google Chrome Puppenspieler-App auf Predix

Predix-web-Starter: https://github.com/PredixDev/predix-webapp-starter Puppeteer: https://www.npmjs.com/package/puppeteer

Puppeteer Code:

const puppeteer = require('puppeteer'); 
(async() => { 
const browser = await puppeteer.launch(); 
const page = await browser.newPage(); 
await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle'}); 
await page.pdf({path: 'hn.pdf', format: 'A4'}); 
await browser.close(); 
})(); 

Logs:

2017-11-07T12:40:16.19+0530 [App/0] ERR /home/vcap/app/node_modules/puppeteer/.local-chromium/linux-508693/chrome-linux/chrome: error while loading shared libraries: libX11-xcb.so.1: cannot open shared object file: No such file or directory 
2017-11-07T12:40:16.19+0530 [App/0] ERR TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at Interface.close (readline.js:319:8) 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at endReadableNT (_stream_readable.js:974:12) 
2017-11-07T12:40:16.19+0530 [App/0] ERR Potentially unhandled rejection [3] Error: Failed to launch chrome! 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at onClose (/home/vcap/app/node_modules/puppeteer/node6/Launcher.js:262:14) 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at emitNone (events.js:91:20) 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at Interface.emit (events.js:186:7) 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at _combinedTickCallback (internal/process/next_tick.js:74:11) 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at Interface.helper.addEventListener (/home/vcap/app/node_modules/puppeteer/node6/Launcher.js:251:50) 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at Socket.onend (readline.js:106:10) 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at emitNone (events.js:91:20) 
2017-11-07T12:40:16.19+0530 [App/0] ERR  at Socket.emit (events.js:186:7) 
2017-11-07T12:41:15.21+0530 [RTR/2] OUT puppeter-arjun-app.run.aws-usw02-pr.ice.predix.io - [2017-11-07T07:10:16.196+0000] "GET /puppeteer HTTP/1.1" 502 0 67 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36" "10.72.11.93:2263" "10.72.2.213:61322" x_forwarded_for:"-" x_forwarded_proto:"http" vcap_request_id:"7d0f3007-914a-42d4-536d-b94eb8d2fb6c" response_time:59.022647288 app_id:"02063159-96d9-43c5-a3e9-77f4e72339f4" app_index:"-" x_b3_traceid:"4f11f468be4b6817" x_b3_spanid:"4f11f468be4b6817" x_b3_parentspanid:"-" 
2017-11-07T12:41:15.21+0530 [RTR/2] OUT 

Antwort

0

Dies liegt daran, Chrome wahrscheinlich mehr Pakete installiert muss richtig funktioniert auf diesem Host. Es gibt ein hervorragendes Problembehebungsdokument here, vorausgesetzt, Sie haben eine gewisse Kontrolle darüber, wie die Umgebung bereitgestellt wird.

Die anderen Optionen bestehen darin, einen anderen Dienst zu verwenden, der Chrome für Sie ausführt (mit dem Sie in AWS oder Google Cloud arbeiten können). Es ist ein ziemlicher Prozess, weshalb ich https://browserless.io geschrieben habe, das schlüsselfertig ist und Puppenspieler 0.11.0 und 0.12.0 unterstützt.

Hoffe, dass Sie auf dem richtigen Weg, viel Glück!

+0

Ich habe keine Kontrolle über die Umwelt. Also, meistens muss ich einen anderen Weg finden oder einen anderen Dienst benutzen, wie Sie es vorgeschlagen haben. Danke für Ihre Hilfe! –

0

Sieht so aus, als ob der Puppenspieler versucht, eine "gemeinsame Bibliothek" zu verwenden, die fehlt oder auf die Sie keinen Zugriff haben. In der Predix Cloud Foundry-Umgebung ist Ihr Zugriff auf das Serverbetriebssystem sehr begrenzt. Sie dürfen nur Ressourcen innerhalb des Containers verwenden, was eine einfache Skalierung ermöglicht.

Was ist Ihr Ziel? Versuchen Sie, Browser-Tests auszuführen? Sie könnten Selen mit Sauce Labs oder Travis versuchen.

+1

Nein, das Ziel besteht darin, HTML im Backend zu rendern, um nach dem Rendern des Codes ein PDF zu generieren. Es gibt keine Benutzeroberfläche, daher wird Back-End-Rendering verwendet. Danke für Ihre Hilfe! –

Verwandte Themen