Latenode

Puppeteer installieren und konfigurieren: Häufige Abhängigkeits- und Chromium-Probleme lösen

Erfahren Sie, wie Sie Puppeteer für die Browserautomatisierung installieren und konfigurieren, häufige Probleme beheben und Ihr Setup für eine bessere Leistung optimieren.

11 Min. Lesezeit
Puppeteer-Konfiguration mit Chromium und Systemabhängigkeiten

Möchten Sie Chrome oder Chromium mühelos automatisieren? Puppeteer ist eine Node.js-Bibliothek, die die Browserautomatisierung vereinfacht – ideal für Aufgaben wie Tests und Scraping. Das erfahren Sie:

  • Direkte Integration auf Latenode: Erfahren Sie, wie Latenode Web-Scraping-Workflows mit einer direkten Integration eines Puppeteer-basierten Headless Browsers und automatisierungsfreundlichen Funktionen erweitert. Sie müssen nichts vorkonfigurieren – fügen Sie einfach den Node hinzu und nutzen Sie ihn in der Workflow-Automatisierung.
  • Einrichtungsanforderungen: Nutzen Sie Node.js 18+ und stellen Sie sicher, dass Ihr System die betriebssystemspezifischen Abhängigkeiten erfüllt.
  • Installationsoptionen: Installieren Sie Puppeteer mit npm i puppeteer (einschließlich Chrome for Testing) oder npm i puppeteer-core (für Ihren eigenen Browser).
  • Tipps zur Fehlerbehebung: Beheben Sie Chromium-Startfehler, fehlende Bibliotheken und Abhängigkeitskonflikte.
  • Erweiterte Konfigurationen: Optimieren Sie die Performance, richten Sie Proxys ein und verwalten Sie Umgebungsvariablen.

Bevor wir eine vollständige Anleitung zu Problemen bei der Konfiguration von Puppeteer teilen, sollten Sie wissen, dass Sie diesen Schritt einfach überspringen und einen direkten, sofort einsatzbereiten Integrations-Node auf Latenode verwenden können. Sehen Sie selbst:

Überspringen Sie die Puppeteer-Konfiguration: Nutzen Sie unsere fertige Integration auf Latenode

Latenode arbeitet nahtlos mit Puppeteer zusammen, um die Browserautomatisierung zu vereinfachen. Im Folgenden betrachten wir die Funktionen von Latenodes und die Nutzung der direkten Puppeteer-Integration für Ihre Automatisierungsanforderungen.

Hier ist ein Überblick über die wichtigsten Funktionen von Latenode:

FunktionBeschreibungVorteil
Headless BrowserIntegration der Puppeteer-BibliothekDirekte Browsersteuerung
KI-Code-AssistentAutomatisierte CodegenerierungBeschleunigt Debugging und Programmierung
No-Code-FlexibilitätÜber 300 No-Code-Integrationen für individuelle Workflow-AnpassungenErweitert die Funktionalität von Puppeteer
NPM-Paket-UnterstützungZugriff auf über 1 Million PaketeErweitert Automatisierungsmöglichkeiten

„Was mir an Latenode im Vergleich zur Konkurrenz am besten gefallen hat, war die Möglichkeit, Code zu schreiben und benutzerdefinierte Nodes zu erstellen.“ – Germaine H., Gründerin Information Technology [3]

Latenode-Tools

Latenode bietet eine Integration mit dem Headless-Browser-Node, der auf Puppeteer basiert. Sie können Code direkt im Editor hinzufügen und ihn für Aufgaben wie das Scraping aller verfügbaren Informationen einer Website, das Erstellen von Screenshots von Seiten, das Ausfüllen von Formularen und grundsätzlich alles verwenden, was Puppeteer unterstützt.

Um diese Integration zu finden, navigieren Sie einfach zum Ordner „Code Integrations“ in der Node-Bibliothek. Dort finden Sie den Headless-Browser-Node. Fügen Sie ihn Ihrem Skript hinzu und klicken Sie darauf. Anschließend öffnet sich ein Editor, in dem Sie Code beliebiger Komplexität und Länge hinzufügen können. Darüber hinaus können Sie in den Einstellungen die Adresse, den Login und das Passwort Ihres Proxys festlegen.

Puppeteer-basierten Headless Browser mit anderen Integrationen verbinden

Ein einzelner Node reicht jedoch nicht für eine Automatisierung aus. Für umfassendere Anpassungen fügen Sie einen Trigger und eine weitere Aktion hinzu. Beispielsweise können Sie einen Webhook-Trigger und eine Antwort verwenden, um Wechselkursänderungen bei der Bank of England zu überwachen, wie wir es in der obigen Anleitung zeigen. Hier ist ein Workflow:

WORKFLOW

Warum sollten Sie die Latenode-Integration einer VPS-basierten Lösung vorziehen?

„Latenode übertrifft die Konkurrenz mit 99 % Verfügbarkeit, erschwinglicher ausführungsbasierter Preisgestaltung und einer benutzerfreundlichen Oberfläche.“ – Hammad Hafeez [3]

Die Preisgestaltung von Latenode basiert auf der Ausführungszeit statt auf einzelnen Aufgaben. Dadurch ist die Plattform eine budgetfreundliche Option für groß angelegte Puppeteer-Automatisierungen. Entwickler können sich auf die Erstellung robuster Workflows konzentrieren, ohne sich um übermäßige Kosten sorgen zu müssen.

Um die Effizienz zu maximieren, können Sie Latenodes JavaScript-Integration sowie mehr als 300 Integrationen mit Datenbanken, CRM-Systemen, Projektmanagement-Tools und KI-Modellen wie Claude, ChatGPT und Gemini nutzen. Es gibt zahlreiche potenzielle Anwendungsfälle: automatisierte Kontaktaufnahme, Datenbankverwaltung, Web Scraping und mehr. Durch die Kombination von Latenode und Puppeteer können Sie Ihre Automatisierungsprozesse zentralisieren und optimieren.

sbb-itb-23997f1

Wenn Sie dennoch eine Anleitung zur Behebung von Puppeteer-Problemen wünschen, finden Sie unten die Details.

Chromium konnte auf einem VPS nicht gestartet werden? Installieren Sie fehlende Abhängigkeiten für Puppeteer auf dem VPS

Bevor Sie beginnen

Stellen Sie vor der Installation von Puppeteer sicher, dass Ihre Umgebung alle erforderlichen Abhängigkeiten erfüllt, damit Installation und Betrieb reibungslos funktionieren.

Node.js-Einrichtung

Puppeteer benötigt Node.js zur Ausführung. Die neuesten Puppeteer-Versionen funktionieren mit Node.js Version 18 oder höher, was der aktuellen LTS-Version entspricht.

Um Ihre Node.js-Version zu überprüfen, verwenden Sie diesen Befehl:

node --version

Wenn Ihre Version unter 18 liegt, aktualisieren Sie Node.js, bevor Sie fortfahren. Die Verwendung der neuesten LTS-Version wird dringend empfohlen. Überprüfen Sie nach der Bestätigung Ihrer Node.js-Version die Betriebssystemanforderungen Ihres Systems.

Systemanforderungen

Die Systemanforderungen für Puppeteer hängen vom verwendeten Betriebssystem ab. Hier ist ein schneller Überblick:

BetriebssystemArchitekturErforderliche KomponentenUngefähre Downloadgröße
Windowsx64Chrome for Testing~280 MB
macOSx64, arm64Chrome for Testing~170 MB
Debian/Ubuntux64Chrome for Testing + Bibliotheken~282 MB

Bei der Installation von Puppeteer wird automatisch eine kompatible Version von Chrome for Testing heruntergeladen. Die Downloadgröße variiert abhängig von Ihrem Betriebssystem (~280 MB für Windows, ~170 MB für macOS und ~282 MB für Debian/Ubuntu Linux) [1].

Linux-Nutzer, insbesondere unter Debian/Ubuntu, müssen einige zusätzliche Bibliotheken installieren. Verwenden Sie den folgenden Befehl:

apt-get install -y libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libgtk-3-0

Hier sind zusätzliche Tipps für spezifische Umgebungen:

  • AWS EC2 Amazon Linux: Aktivieren Sie das EPEL-Repository und installieren Sie Chromium, bevor Sie Puppeteer einrichten.
  • Docker-Umgebungen: Fügen Sie die erforderlichen gemeinsam genutzten Bibliotheken und das Chromium-Paket zu Ihrem Dockerfile hinzu.
  • TypeScript Projekte: Verwenden Sie TypeScript Version 4.7.4 oder höher, um auf die neuesten Typdefinitionen von Puppeteer zuzugreifen und die IDE-Unterstützung zu verbessern.

Grundlegende Installationsschritte

Sobald Sie Ihre Node.js-Einrichtung und die Systemanforderungen überprüft haben, können Sie Puppeteer über npm installieren.

npm-Installationsanleitung

Sie haben zwei Möglichkeiten, Puppeteer über npm zu installieren:

  • Standardinstallation: Diese Option lädt Chrome for Testing automatisch herunter:

    npm i puppeteer
    
  • Core-Installation: Nutzen Sie diese Option, wenn Sie Browser separat verwalten und den Download von Chrome for Testing überspringen möchten:

    npm i puppeteer-core
    

Bei der Standardinstallation werden Chrome for Testing und die Binärdatei chrome-headless-shell unter $HOME/.cache/puppeteer heruntergeladen. Details zu den Downloadgrößen finden Sie im Abschnitt „Systemanforderungen“.

Nach der Installation können Sie Ihre Einrichtung testen.

Ihre Einrichtung testen

Erstellen Sie zunächst eine Datei namens test.js und fügen Sie das folgende Skript hinzu:

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.google.com');
  console.log('Page title:', await page.title());
  await browser.close();
})();

Führen Sie das Skript aus mit:

node test.js

Wenn das Skript erfolgreich ausgeführt wird und den Seitentitel anzeigt, funktioniert Ihre Installation korrekt.

Tipps zur Fehlerbehebung

  • Linux-Nutzer: Verwenden Sie Ihren Paketmanager, um sicherzustellen, dass alle erforderlichen Abhängigkeiten installiert sind.
  • Windows-Nutzer: Stellen Sie sicher, dass die Sandbox-Berechtigungen von Chrome korrekt konfiguriert sind.
  • Wenn Chrome nicht an seinem Standardspeicherort gefunden wird, legen Sie die Umgebungsvariable PUPPETEER_CACHE_DIR so fest, dass sie auf das korrekte Installationsverzeichnis verweist.

„Die Ausführung ohne Sandbox wird dringend abgeraten. Erwägen Sie stattdessen die Konfiguration einer Sandbox.“ [2]

Für bessere Stabilität und einfachere Wartung können Sie eine Datei .puppeteerrc.cjs erstellen, um das Verhalten von Puppeteer zu konfigurieren, anstatt Argumente direkt an die Methode launch zu übergeben.

Chromium-Probleme beheben

Probleme mit Chromium entstehen häufig durch fehlende Bibliotheken oder falsche Einstellungen.

Lokales Chromium verwenden

Wenn Sie lieber eine vorhandene Chromium-Installation verwenden möchten, statt eine neue herunterzuladen, können Sie Puppeteer für die Nutzung Ihres lokalen Browsers einrichten. Diese Methode ist hilfreich, wenn Sie eine bestimmte Chromium-Version benötigen oder Browserinstallationen manuell verwalten.

Um Puppeteer mit Ihrem lokalen Chromium zu verknüpfen, passen Sie Ihre Starteinstellungen wie folgt an:

const browser = await puppeteer.launch({ executablePath: '/usr/bin/chromium-browser' });

Stellen Sie sicher, dass alle erforderlichen Bibliotheken installiert sind. Unter Linux können Sie fehlende Bibliotheken ermitteln mit:

ldd chrome | grep not

Falls eine lokale Installation keine Option ist, sollten Sie Chromium separat mithilfe der folgenden Schritte installieren.

Chromium separat installieren

Seit Puppeteer v20.0.0 wird Chrome for Testing statt Chromium heruntergeladen.

Kompatibilitätsübersicht:

Puppeteer-VersionBrowserversionDownloadgröße
v24.4.0Chrome for Testing 134.0.6998.35~170 MB (macOS)
v24.3.1Chrome for Testing 133.0.6943.141~282 MB (Linux)
v24.3.0Chrome for Testing 133.0.6943.126~280 MB (Windows)

Wenn der Fehler „Failed to launch chrome“ auftritt, probieren Sie diese Lösungen:

  1. Abhängigkeiten prüfen: Installieren Sie fehlende Bibliotheken auf Debian-basierten Systemen:

    sudo apt-get install -y libasound2 libatk1.0-0 libgbm-dev
    
  2. Speichereinstellungen anpassen: Erhöhen Sie in Docker-Umgebungen entweder die Größe von /dev/shm oder verwenden Sie das Flag --disable-dev-shm-usage:

    const browser = await puppeteer.launch({
      args: ['--disable-dev-shm-usage']
    });
    
  3. Navigation-Timeouts festlegen: Vermeiden Sie Hänger, indem Sie einen benutzerdefinierten Navigation-Timeout festlegen, beispielsweise 60 Sekunden:

    await page.setDefaultNavigationTimeout(60000); // 60 seconds
    

„Headless chrome(-ium) benötigt viele Abhängigkeiten, um zu funktionieren, und Puppeteer installiert sie nicht alle.“ – savebreach.com

Für Umgebungen wie GitLab CI oder Fälle, in denen Sandboxing deaktiviert ist (nicht empfohlen), fügen Sie spezifische Startargumente hinzu:

const browser = await puppeteer.launch({
  args: ['--no-sandbox', '--disable-setuid-sandbox']
});

Um HTTPS-bezogene Warnungen in aktuellen Chrome-Versionen zu umgehen, deaktivieren Sie die Funktion HttpsFirstBalancedModeAutoEnable:

const browser = await puppeteer.launch({
  args: ['--disable-features=HttpsFirstBalancedModeAutoEnable']
});

Abhängigkeiten verwalten

Eine effektive Verwaltung von Abhängigkeiten ist entscheidend, um Startfehler und unvorhersehbares Verhalten zu vermeiden. Dieser Abschnitt behandelt die Behebung von Versionskonflikten und die Aktualisierung von Paketen, um Laufzeitfehler zu verhindern.

Paketkonflikte beheben

Paketkonflikte führen häufig zu Fehlern wie „Cannot find module 'puppeteer-core/internal/...'“ oder Problemen beim Chrome-Start. So beheben Sie diese Probleme:

// Beispiel: Auflösen von Versionskonflikten mit package.json-Überschreibungen
{
  "overrides": {
    "ws": "^8.17.1",
    "debug": "^4.3.4"
  }
}

Schritte zur Fehlerbehebung:

  • Node.js-Version prüfen: Stellen Sie sicher, dass Sie Node.js 18 oder höher verwenden. Ältere Versionen können zu Kompatibilitätsproblemen führen.
  • Systembibliotheken überprüfen: Stellen Sie unter Linux sicher, dass alle erforderlichen Systembibliotheken installiert sind. Beachten Sie die Abhängigkeitsliste im Abschnitt „Systemanforderungen“.
  • Chrome-Richtlinien prüfen: Chrome-Richtlinien können mit dem standardmäßigen Flag --disable-extensions von Puppeteer kollidieren. Versuchen Sie, ohne dieses Flag zu starten:
const browser = await puppeteer.launch({
  ignoreDefaultArgs: ['--disable-extensions']
});

Sobald Konflikte behoben sind, aktualisieren Sie Ihre Pakete, um langfristige Stabilität sicherzustellen.

Pakete aktuell halten

Regelmäßige Aktualisierungen von Abhängigkeiten reduzieren Sicherheitsrisiken und gewährleisten Kompatibilität. So verwalten Sie diesen Prozess:

  • Abhängigkeiten verfolgen

Verwenden Sie eine einfache Tabelle, um Paketversionen, Aktualisierungsdaten und deren Bedeutung zu überwachen:

PaketAktuelle VersionZuletzt aktualisiertErforderlich für
puppeteer24.4.0Mär 2024Kernfunktionalität
ws8.17.1Feb 2024WebSocket-Unterstützung
debug4.3.4Jan 2024Protokollierungssystem
  • Versionsverwaltung

Gehen Sie bei Aktualisierungen sorgfältig mit Bereichen der semantischen Versionierung um. Bei kritischen Abhängigkeiten sollten Sie exakte Versionen festlegen, um unerwartete Änderungen zu vermeiden:

{
  "dependencies": {
    "puppeteer": "24.4.0",
    "puppeteer-core": "24.4.0"
  }
}
  • Fehlerbehebung bei Updates

Erstellen Sie einen detaillierten Abhängigkeitsbericht mit:

npm list --all > dependency-report.txt

Dieser Bericht hilft dabei, Konflikte und problematische verschachtelte Abhängigkeiten zu identifizieren.

Stellen Sie für Umgebungen wie Docker oder GitLab CI sicher, dass Ihre Konfiguration die notwendigen Systempakete enthält:

RUN apt-get update && apt-get install -y \
    chromium \
    libnss3 \
    libgconf-2-4 \
    libxss1

Zusätzliche Einstellungen

Optimieren Sie Puppeteer für erweiterte Setups mit diesen zusätzlichen Konfigurationen.

Umgebungsvariablen

Umgebungsvariablen ermöglichen es Ihnen, das Verhalten von Puppeteer anzupassen und Standardeinstellungen zu überschreiben.

Hier sind einige wichtige Variablen:

VariableZweckBeispielwert
PUPPETEER_CACHE_DIRLegt ein benutzerdefiniertes Cache-Verzeichnis für Browser-Downloads fest/usr/local/cache/puppeteer
PUPPETEER_EXECUTABLE_PATHVerweist auf eine bestimmte Browser-Programmdatei/usr/bin/chromium
HTTP_PROXYKonfiguriert HTTP-Proxy-Einstellungenhttp://proxy.company.com:8080
HTTPS_PROXYKonfiguriert HTTPS-Proxy-Einstellungenhttps://proxy.company.com:8443
NO_PROXYListet Domains auf, die von der Proxy-Nutzung ausgeschlossen sindlocalhost,127.0.0.1

Definieren Sie bei benutzerdefinierten Chromium-Installationen den Pfad zur Programmdatei wie folgt:

const browser = await puppeteer.launch({
  executablePath: process.env.PUPPETEER_EXECUTABLE_PATH || puppeteer.executablePath()
});

Sobald die Umgebungsvariablen festgelegt sind, können Sie Proxys konfigurieren, um Netzwerkbeschränkungen effektiv zu handhaben.

Proxy-Konfiguration

Um einen Proxy-Server mit Puppeteer zu verwenden, wenden Sie die folgende Einrichtung an:

// Puppeteer mit einem Proxy-Server und Authentifizierung starten
const browser = await puppeteer.launch({
  args: ['--proxy-server=http://157.230.255.230:8118']
});

await page.authenticate({
  username: 'proxyUser',
  password: 'proxyPass'
});

// Navigation mit spezifischen Einstellungen optimieren
await page.goto('https://example.com', {
  waitUntil: 'networkidle2',
  timeout: 30000
});

Fügen Sie eine Fehlerbehandlung hinzu, um eine robuste Performance in der Produktion sicherzustellen:

try {
  await page.goto(url);
} catch (error) {
  console.error('Proxy connection failed:', error.message);
  // Fallback-Logik oder Wiederholungsmechanismus hinzufügen
}

Für Unternehmensumgebungen exportieren Sie Proxy-Einstellungen in Ihrem Terminal:

export HTTP_PROXY="http://proxy.company.com:8080"
export HTTPS_PROXY="https://proxy.company.com:8443"
export NO_PROXY="localhost,127.0.0.1,.company.internal"

Sie können Proxy-Verbindungen auch programmatisch validieren:

const validateProxy = async (page) => {
  try {
    await page.goto('https://api.ipify.org?format=json');
    const content = await page.content();
    return content.includes('ip');
  } catch {
    return false;
  }
};

So stellen Sie sicher, dass Ihre Proxy-Einrichtung korrekt funktioniert, bevor Sie fortfahren.

Nächste Schritte

Checkliste für die Einrichtung

Stellen Sie vor Beginn der Puppeteer-Automatisierung sicher, dass Ihre Umgebung korrekt konfiguriert ist. Verwenden Sie das folgende Skript, um Ihre Einrichtung zu validieren:

// Validierungsskript für die Umgebungseinrichtung
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.validateEnvironment();  // Benutzerdefinierte Validierung
await browser.close();
EinrichtungskomponenteÜberprüfungsschrittHäufiges Problem
Node.jsVersionskompatibilität prüfenVeraltete Node.js-Version
Package.jsonEintrag "type": "module" überprüfenES6-Importfehler
Chrome-InstallationBrowserstart testenFehlende Chromium-Binärdatei
SpeichereinstellungenGröße von /dev/shm in Docker prüfenBrowserabsturz beim Start
Ressourcenverwaltungbrowser.close() implementierenSpeicherlecks

Sobald Ihre Einrichtung überprüft wurde, können Sie sich auf die Optimierung Ihrer Workflows konzentrieren, um bessere Automatisierungsergebnisse zu erzielen.

Tipps für den Einstieg

Das PDF-System von Carriyo verarbeitete effizient täglich 10.000 Versandetiketten und erreichte eine p95-Latenz von 365 ms [4]. Um ähnliche Leistungsniveaus zu erzielen, sollten Sie diese Strategien berücksichtigen:

  • Ressourcenverwaltung: Deaktivieren Sie unnötige Funktionen, um Ressourcen zu sparen. Starten Sie Puppeteer beispielsweise mit optimierten Einstellungen:

    const browser = await puppeteer.launch({
      headless: true,
      args: ['--disable-dev-shm-usage'],
      defaultViewport: { width: 1920, height: 1080 }
    });
    
  • Fehlerbehandlung: Verwenden Sie robuste Methoden zur Fehlerbehebung, beispielsweise Try-Catch-Blöcke und benutzerdefinierte Fehlerbehandler für spezifische Probleme.

  • Performance-Optimierung: Steigern Sie die Geschwindigkeit durch:

    • Zwischenspeichern häufig verwendeter Daten
    • Abfangen von Netzwerkanfragen
    • Parallele Ausführung von Aufgaben
    • Nutzung von Chrome DevTools zur Überwachung der Performance

Für fortgeschrittenere Automatisierungen erkunden Sie Latenodes Low-Code-Workflow-Plattform. Sie bietet ausführungsbasierte Preisgestaltung und zahlreiche Funktionen, um komplexe Puppeteer-Implementierungen zu vereinfachen [3].

References

FAQ

Frequently Asked Questions

Aktuelle Puppeteer-Versionen benötigen Node.js 18 oder höher. Prüfen Sie Ihre Version mit node --version und aktualisieren Sie vor der Installation von Puppeteer auf die aktuelle LTS-Version.

War das hilfreich? Teile es →

Geschrieben von

Vasiliy Datsenko

Leiter des Kundensupports

Vasiliy Datsenko ist Leiter des Kundensupports bei Latenode und ein produktorientierter Autor zum Thema Automatisierung. Seine Arbeit verbindet Kundengespräche, Workflow-Automatisierungsforschung, KI-Anwendungsfälle und praktische Produktschulungen für Teams, die echte Geschäftsprozesse automatisieren möchten.

Autorenprofil →

Faktencheck von

Oleg Zankov

CEO Latenode, No-code-Experte

Mit einer Philosophie, die auf Innovation, Problemlösung und Benutzererfahrung basiert, konzentriere ich mich darauf, Teams zu befähigen, maßgeschneiderte Integrationen zu erstellen und Arbeitsabläufe einfach und effizient zu automatisieren. Mit umfangreicher Erfahrung in den Bereichen Geschäftsentwicklung, Technologieunternehmertum und Softwareentwicklung erkannte ich den Bedarf an einer zugänglicheren, skalierbareren und anpassungsfähigeren Integrationslösung. So entstand Latenode.com. Mit unserer Plattform können Unternehmen die Macht der Technologie nutzen, ohne umfassende Programmierkenntnisse zu benötigen. Leidenschaftlich daran interessiert, eine Zukunft zu fördern, in der Technologie uns dient und nicht umgekehrt, ist es meine Mission, komplexe Prozesse zu vereinfachen. Ich glaube an die Demokratisierung der Technologie und daran, Teams mit den Werkzeugen auszustatten, um in einer zunehmend digitalen Welt zu innovieren, zu wachsen und erfolgreich zu sein.

Autorenprofil →

Weiterlesen