Eine Low-Code-Plattform, die die Einfachheit von No-Code mit der Leistung von Full-Code verbindet 🚀
Jetzt kostenlos starten
Installieren und Konfigurieren von Puppeteer: Lösen häufiger Abhängigkeits- und Chromium-Probleme
12. März 2025
10
min lesen

Installieren und Konfigurieren von Puppeteer: Lösen häufiger Abhängigkeits- und Chromium-Probleme

Georgi Miloradowitsch
Forscher, Texter und Usecase-Interviewer
Inhaltsverzeichnis

Möchten Sie Chrome oder Chromium problemlos automatisieren? Puppenspieler ist eine Node.js Bibliothek, die die Browserautomatisierung vereinfacht und sich perfekt für Aufgaben wie Testen und Scraping eignet. Folgendes lernen Sie:

  • Direkte Integration auf Latenode: Erfahren Sie, wie Latenknoten verbessert Web Scraping-Workflows mit einem direkte Integration mit Puppeteer-basiertem Headless Browser und automatisierungsfreundliche Funktionen. Sie müssen nichts vorkonfigurieren, fügen Sie einfach den Knoten hinzu und verwenden Sie ihn in der Workflow-Automatisierung!
  • Setup-Anforderungen: Verwenden 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 (beinhaltet Chrome zum Testen) oder npm i puppeteer-core (verwenden Sie Ihren eigenen Browser).
  • Tipps zur Fehlerbehebung: Beheben Sie Chromium-Startfehler, fehlende Bibliotheken und Abhängigkeitskonflikte.
  • Erweiterte Konfigurationen: Optimieren Sie die Leistung, richten Sie Proxys ein und verwalten Sie Umgebungsvariablen.

Bevor wir eine vollständige Anleitung zu Problemen bei der Konfiguration von Puppeteer veröffentlichen, sollten Sie wissen, dass Sie diese einfach überspringen und einen direkten, vorgefertigten Integrationsknoten auf Latenode verwenden können! Schauen Sie es sich an:

Überspringen Sie die Konfiguration von Puppeteer: Nutzen Sie unsere vorgefertigte Integration auf Latenknoten

Latenode arbeitet nahtlos mit Puppeteer zusammen und vereinfacht die Browserautomatisierung. Im Folgenden erläutern wir die Funktionen von Latenode und wie Sie die direkte Integration mit Puppeteer für Ihre Automatisierungsanforderungen nutzen können.

Hier ist eine Aufschlüsselung der Hauptfunktionen von Latenode:

Merkmal Beschreibung Vorteile
Kopfloser Browser Integration der Puppeteer-Bibliothek Direkte Browsersteuerung
AI-Code-Assistent Automatisierte Codegenerierung Beschleunigt das Debuggen und Codieren
Flexibilität ohne Code Über 300 No-Code-Integrationen für maßgeschneiderte Workflow-Anpassungen Erweitert die Puppeteer-Funktionalität
NPM-Paketunterstützung Zugriff auf über 1 Million Pakete Steigert die Automatisierungsmöglichkeiten

„Was mir an Latenode im Vergleich zur Konkurrenz am besten gefiel, war, dass ich die Möglichkeit hatte, Code zu schreiben und benutzerdefinierte Knoten zu erstellen.“ – Germaine H., Gründerin von Information Technology

Latenknoten Werkzeuge

Latenknoten

Latenode bietet eine Integration mit dem Headless Browser-Knoten, der auf Puppeteer basiert und es Ihnen ermöglicht, Code direkt in den Editor einzufügen und ihn für Aufgaben wie das Scraping aller verfügbaren Informationen von einer Website, das Erstellen von Screenshots von Seiten, das Ausfüllen von Formularen und generell alles, was Puppeteer unterstützt, zu verwenden.

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, klicken Sie darauf und es öffnet sich ein Editor, in dem Sie Code beliebiger Komplexität und Länge hinzufügen können. Zusätzlich können Sie in den Einstellungen Adresse, Login und Passwort Ihres Proxys festlegen.

Verbinden des Puppeteer-basierten Headless-Browsers mit anderen Integrationen

Ein Knoten allein reicht jedoch nicht für die Automatisierung aus. Für eine noch individuellere Anpassung fügen Sie einen Trigger und eine weitere Aktion hinzu. Beispielsweise einen Webhook-Trigger und eine entsprechende Antwort zur Überwachung von Wechselkursänderungen bei der Bank of England, wie wir in der obigen Anleitung zeigen. Hier ein Beispiel:

SZENARIO

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

„Latenode lässt die Konkurrenz mit 99 % Verfügbarkeit, erschwinglichen, ausführungsbasierten Preisen und einer benutzerfreundlichen Oberfläche hinter sich.“ – Hammad Hafeez

Die Preise von Latenode basieren auf der Ausführungszeit und nicht auf einzelnen Aufgaben. Dies macht es zu einer budgetfreundlichen Option für die groß angelegte Puppeteer-Automatisierung. Diese Plattform ermöglicht es Entwicklern, sich auf die Erstellung robuster Workflows zu konzentrieren, ohne sich über übermäßige Kosten Gedanken machen zu müssen.

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

sbb-itb-23997f1

Wenn Sie dennoch eine Anleitung zum Beheben von Puppeteer-Problemen wünschen, sehen Sie sich die folgende Aufschlüsselung an.

Chromium konnte auf VPS nicht gestartet werden? Fehlende Abhängigkeiten auf VPS Puppetter installieren

Bevor du anfängst

Stellen Sie vor der Installation von Puppeteer sicher, dass Ihr Setup die erforderlichen Abhängigkeiten erfüllt, um eine reibungslose Installation und einen reibungslosen Betrieb zu gewährleisten.

Node.js Einrichtung

Node.js

Puppenspieler erfordert Node.js zu laufen. Die neuesten Versionen von Puppeteer funktionieren mit Node.js Version 18 oder höher, das mit der aktuellen LTS-Version übereinstimmt.

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

node --version

Wenn Ihre Version älter als 18 ist, 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 kurzer Überblick:

Betriebssystem Architektur Erforderliche Komponenten Ungefähre Downloadgröße
Windows x64 Chrome zum Testen ~280 MB
macOS x64, arm64 Chrome zum Testen ~170 MB
Debian / Ubuntu x64 Chrome zum Testen + Bibliotheken ~282 MB

Bei der Installation von Puppeteer wird automatisch eine kompatible Version von Chrome zum Testen heruntergeladen. Die Downloadgröße variiert je nach Betriebssystem (ca. 280 MB für Windows, ca. 170 MB für macOS und ca. 282 MB für Debian/Ubuntu Linux).

Linux-Benutzer, 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 einige zusätzliche Tipps für bestimmte Umgebungen:

  • AWS EC2 Amazon Linux: Aktivieren Sie das EPEL-Repository und installieren Sie Chromium, bevor Sie Puppeteer einrichten.
  • Docker-Umgebungen: Fügen Sie Ihrem Dockerfile die erforderlichen gemeinsam genutzten Bibliotheken und das Chromium-Paket hinzu.
  • Typoskript Projekte: Benutzen 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 Ihr Node.js-Setup und Ihre Systemanforderungen bestätigt haben, können Sie Puppeteer mit npm installieren.

npm-Installationshandbuch

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

  • Standard-Installation: Diese Option lädt Chrome automatisch zum Testen herunter:
    npm i puppeteer
    
  • Kerninstallation: Verwenden Sie dies, wenn Sie Browser separat verwalten und das Herunterladen von Chrome zum Testen überspringen möchten:
    npm i puppeteer-core
    

Mit der Standardinstallation werden Chrome for Testing und die chrome-headless-shell Binärdateien werden heruntergeladen auf $HOME/.cache/puppeteer. Weitere Informationen zur Downloadgröße finden Sie im Abschnitt „Systemanforderungen“.

Nach der Installation können Sie Ihr Setup testen.

Testen Ihres Setups

Beginnen Sie mit der Erstellung einer Datei mit dem Namen 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 mit folgendem Befehl aus:

node test.js

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

Tipps zur Fehlerbehebung

  • Linux-Benutzer: Verwenden Sie Ihren Paketmanager, um sicherzustellen, dass alle erforderlichen Abhängigkeiten installiert sind.
  • Windows-Benutzer: Überprüfen Sie, ob die Sandbox-Berechtigungen von Chrome richtig konfiguriert sind.
  • Wenn Chrome nicht am Standardspeicherort gefunden wird, legen Sie die PUPPETEER_CACHE_DIR Umgebungsvariable, um auf das richtige Installationsverzeichnis zu verweisen.

„Laufen ohne Sandkasten ist dringend abgeraten. Erwägen Sie stattdessen die Konfiguration einer Sandbox."

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

Beheben von Chromium-Problemen

Chromium-Probleme sind häufig auf fehlende Bibliotheken oder falsche Einstellungen zurückzuführen.

Lokales Chrom verwenden

Wenn Sie lieber eine vorhandene Chromium-Installation verwenden möchten, anstatt eine neue herunterzuladen, können Sie Puppeteer so einrichten, dass es mit Ihrem lokalen Browser funktioniert. Diese Methode ist hilfreich, wenn Sie eine bestimmte Chromium-Version benötigen oder Browserinstallationen manuell durchführen.

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 folgendermaßen identifizieren:

ldd chrome | grep not

Wenn eine lokale Installation keine Option ist, können Sie Chromium mithilfe der folgenden Schritte separat installieren.

Chromium separat installieren

Ab Puppeteer v20.0.0 wird Chrome for Testing anstelle von Chromium heruntergeladen.

Kompatibilitätsübersicht:

Puppenspieler-Version Browserversion Herunterladen Größe
v24.4.0 Chrome zum Testen 134.0.6998.35 ~170 MB (macOS)
v24.3.1 Chrome zum Testen 133.0.6943.141 ~282 MB (Linux)
v24.3.0 Chrome zum Testen 133.0.6943.126 ~280 MB (Windows)

Wenn die Fehlermeldung „Chrome konnte nicht gestartet werden“ auftritt, versuchen Sie Folgendes:

  1. Abhängigkeiten prüfen: Installieren Sie alle fehlenden Bibliotheken auf Debian-basierten Systemen:
    sudo apt-get install -y libasound2 libatk1.0-0 libgbm-dev
    
  2. Speichereinstellungen anpassen: Erhöhen Sie für Docker-Umgebungen entweder /dev/shm Größe oder verwenden Sie die --disable-dev-shm-usage Flagge:
    const browser = await puppeteer.launch({
      args: ['--disable-dev-shm-usage']
    });
    
  3. Festlegen von Navigations-Timeouts: Vermeiden Sie Hänger, indem Sie ein benutzerdefiniertes Navigations-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), schließen Sie spezifische Startargumente ein:

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

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

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

Umgang mit Abhängigkeiten

Die effektive Verwaltung von Abhängigkeiten ist entscheidend, um Startfehler und unvorhersehbares Verhalten zu vermeiden. Dieser Abschnitt behandelt das Beheben von Versionskonflikten und das Aktualisieren von Paketen, um Laufzeitfehler zu vermeiden.

Beheben von Paketkonflikten

Paketkonflikte führen häufig zu Fehlern wie „Modul ‚puppeteer-core/internal/…‘ nicht gefunden“ oder Problemen beim Chrome-Start. So beheben Sie diese Probleme:

// Example: Resolving version conflicts using package.json overrides
{
  "overrides": {
    "ws": "^8.17.1",
    "debug": "^4.3.4"
  }
}

Schritte zur Fehlerbehebung:

  • Überprüfen Sie die Node.js-Version: Stellen Sie sicher, dass Sie Node.js 18 oder höher verwenden. Ältere Versionen können zu Kompatibilitätsproblemen führen.
  • Überprüfen der Systembibliotheken: Stellen Sie unter Linux sicher, dass alle erforderlichen Systembibliotheken installiert sind. Weitere Informationen finden Sie in der Abhängigkeitsliste im Abschnitt „Systemanforderungen“.
  • Überprüfen Sie die Chrome-Richtlinien: Chrome-Richtlinien können mit den Standardeinstellungen von Puppeteer in Konflikt geraten --disable-extensions Flagge. Versuchen Sie den Start ohne sie:
const browser = await puppeteer.launch({
  ignoreDefaultArgs: ['--disable-extensions']
});

Sobald Konflikte gelöst sind, aktualisieren Sie Ihre Pakete, um anhaltende Stabilität sicherzustellen.

Pakete auf dem neuesten Stand halten

Regelmäßiges Aktualisieren von Abhängigkeiten reduziert Sicherheitsrisiken und gewährleistet Kompatibilität. So verwalten Sie diesen Prozess:

  • Abhängigkeiten verfolgen

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

Paket Aktuelle Version Letzte Aktualisierung Benötigt von
Puppenspieler 24.4.0 Mar 2024 Kernfunktionalität
ws 8.17.1 Februar 2024 WebSocket-Unterstützung
debuggen 4.3.4 Jan 2024 Protokollierungssystem
  • Versionsverwaltung

Gehen Sie beim Aktualisieren mit semantischen Versionsbereichen sorgfältig um. Fixieren Sie bei kritischen Abhängigkeiten genaue Versionen, 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 bei der Identifizierung von Konflikten und problematischen verschachtelten Abhängigkeiten.

Stellen Sie für Umgebungen wie Docker oder GitLab CI sicher, dass Ihre Konfiguration die erforderlichen 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

Mithilfe von Umgebungsvariablen können Sie das Verhalten von Puppeteer anpassen und Standardeinstellungen überschreiben.

Hier sind einige Schlüsselvariablen:

Variable Sinn Beispielwert
PUPPETEER_CACHE_DIR Gibt ein benutzerdefiniertes Cache-Verzeichnis für Browser-Downloads an /usr/local/cache/puppeteer
PUPPETEER_EXECUTABLE_PATH Verweist auf eine bestimmte ausführbare Browserdatei /usr/bin/chromium
HTTP-PROXY Konfiguriert die HTTP-Proxy-Einstellungen http://proxy.company.com:8080
https_proxy Konfiguriert HTTPS-Proxy-Einstellungen https://proxy.company.com:8443
KEIN VERTRETER Listet Domänen auf, die von der Proxy-Nutzung ausgeschlossen sind lokaler Host, 127.0.0.1

Definieren Sie für benutzerdefinierte Chromium-Installationen den ausführbaren Pfad wie folgt:

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

Sobald Umgebungsvariablen festgelegt sind, können Sie Proxys so konfigurieren, dass sie Netzwerkeinschränkungen effektiv handhaben.

Proxy-Konfiguration

Um einen Proxyserver mit Puppeteer zu verwenden, wenden Sie das folgende Setup an:

// Launch Puppeteer with a proxy server and authentication
const browser = await puppeteer.launch({
  args: ['--proxy-server=http://157.230.255.230:8118']
});

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

// Optimize navigation with specific settings
await page.goto('https://example.com', {
  waitUntil: 'networkidle2',
  timeout: 30000
});

Schließen Sie eine Fehlerbehandlung ein, um eine robuste Leistung in der Produktion sicherzustellen:

try {
  await page.goto(url);
} catch (error) {
  console.error('Proxy connection failed:', error.message);
  // Add fallback logic or retry mechanism
}

Exportieren Sie für Unternehmenskonfigurationen die Proxy-Einstellungen in Ihr 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 programmgesteuert 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;
  }
};

Dadurch wird sichergestellt, dass Ihr Proxy-Setup ordnungsgemäß funktioniert, bevor Sie fortfahren.

Nächste Schritte

Setup-Checkliste

Bevor Sie mit der Puppeteer-Automatisierung beginnen, stellen Sie sicher, dass Ihre Umgebung korrekt konfiguriert ist. Verwenden Sie das folgende Skript, um Ihr Setup zu validieren:

// Validation script for environment setup
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.validateEnvironment();  // Custom validation
await browser.close();
Setup-Komponente Verifizierungsschritt Gemeinsames Problem
Node.js Überprüfen der Versionskompatibilität Veraltete Node.js-Version
Paket.json Überprüfen Sie den Eintrag "type": "module" ES6-Importfehler
Chrome-Installation Testen Sie den Browserstart Fehlende Chromium-Binärdatei
Speichereinstellungen Überprüfen Sie die Größe von /dev/shm in Docker Browser stürzt beim Start ab
Ressourcenmanagement Implementieren Sie browser.close() Speicherlecks

Sobald Ihr Setup überprüft wurde, können Sie sich auf die Verbesserung Ihrer Arbeitsabläufe konzentrieren, um bessere Automatisierungsergebnisse zu erzielen.

Erste Schritte

CarriyoDas PDF-System von verarbeitete täglich effizient 10,000 Versandetiketten und erreichte dabei eine p95-Latenz von 365 ms. Um ähnliche Leistungsniveaus zu erreichen, sollten Sie folgende Strategien in Betracht ziehen:

  • Ressourcenmanagement: Deaktivieren Sie unnötige Funktionen, um Ressourcen zu sparen. Starten Sie beispielsweise Puppeteer 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, z. B. Try-Catch-Blöcke und benutzerdefinierte Fehlerhandler, die auf bestimmte Probleme zugeschnitten sind.
  • Leistungsoptimierung: Geschwindigkeit steigern durch:
    • Zwischenspeichern häufig verwendeter Daten
    • Abfangen von Netzwerkanfragen
    • Paralleles Ausführen von Aufgaben
    • Verwenden von Chrome DevTools zur Leistungsüberwachung

Für eine erweiterte Automatisierung entdecken Sie die Low-Code-Workflow-Plattform von Latenode. Sie bietet ausführungsbasierte Preise und zahlreiche Funktionen zur Vereinfachung komplexer Puppeteer-Implementierungen.

Ähnliche Blog-Beiträge

Verwandte Blogs

Anwendungsfall

Unterstützt von