Behebung von Puppetteer 'Running as root without --no-sandbox is not supported'
English
Deutsch
Problem:
Wenn du versuchst, deine Puppetteer-Anwendung auszuführen, z.B. unter Docker, siehst du diese Fehlermeldung:
Lösung
Hinweis: Außer du führst sie in einem Docker- oder ähnlichen Container aus, erwäge zuerst, die Anwendung als Nicht-root-Benutzer auszuführen!
Du musst die --no-sandbox-Option an puppeteer.launch() übergeben:
puppeteer_run_root_example.js
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox']
});Wir empfehlen, diese etwas komplexere Lösung zu verwenden, um sie nur zu übergeben, wenn der Prozess als root ausgeführt wird:
puppeteer_launch_options.js
/**
* Gibt true zurück, wenn der aktuelle Prozess vom root-Benutzer ausgeführt wird
* https://techoverflow.net/2019/11/07/how-to-check-if-nodejs-is-run-by-root/
*/
function isCurrentUserRoot() {
return process.getuid() == 0; // UID 0 ist immer root
}
const browser = await puppeteer.launch({
headless: true,
args: isCurrentUserRoot() ? ['--no-sandbox'] : undefined
});Dies stellt sicher, dass Chromium im sicherstmöglichen Modus mit dem aktuellen Benutzer ausgeführt wird.
Check out similar posts by category:
Javascript, NodeJS, Puppeteer
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow