Document Loader-Knoten schlägt mit "DOMMatrix is not defined" beim Parsen von PDF-Dateien fehl

Hallo zusammen,

Ich habe ein Problem mit dem Document Loader-Node beim Ingesting von PDF-Dateien in einem Gemini RAG-Workflow auf selbstgehosteten n8n.

Workflow:

Webhook
→ Read/Write Files from Disk
→ Document Loader
→ Vector Store Insert

Die PDF-Datei wird erfolgreich erkannt und als Binärdaten in den Document Loader-Node weitergeleitet, aber der Node schlägt beim Parsing der PDF fehl.

CSV-Ingestion funktioniert korrekt. Das Problem tritt nur bei PDFs auf.

Fehler:

DOMMatrix is not defined

Eingabe, die vom Document Loader-Node empfangen wird:

{
  "mimeType": "application/pdf",
  "fileType": "pdf",
  "fileName": "agents.pdf",
  "fileExtension": "pdf",
  "fileSize": "2.03 MB"
}

Document Loader-Konfiguration:

  • Datentyp: Binär

  • Modus: Alle Eingabedaten laden

  • Datenformat: Automatische Erkennung nach MIME-Typ

  • Texttrennung: Benutzerdefiniert

Umgebung:

  • n8n-Version: 2.23.0

  • Datenbank: SQLite

  • Ausführung über: Docker (selbstgehostet)

  • Betriebssystem: Ubuntu Linux

Kannst du auf 2.21.7 zurückgehen, @Rahul_Parmar ? 2.23 ist noch Beta

@Rahul_Parmar bekannte Regression seit n8n 1.98, als pdfjs-dist auf eine Version aktualisiert wurde, die Browser-APIs wie DOMMatrix benötigt — mehrere offene GitHub-Issues dazu (#16593, #16438, #16422). Workaround, der auf 2.23.0 funktioniert, ohne downzugraden: Document Loader für PDFs umgehen und stattdessen einen Code-Node mit dem pdf-parse npm-Paket verwenden. NODE_FUNCTION_ALLOW_EXTERNAL=pdf-parse in deinen Umgebungsvariablen setzen, den Text im Code-Node extrahieren, den extrahierten Text direkt in Vector Store Insert übergeben. Ist der Rest deines Workflows stark an Document Loader gebunden, oder wird er nur für die PDF-Textextraktion verwendet?

Ich habe zuvor Version 2.21.7 verwendet, bin aber aktualisiert worden wegen des pdf-parse v1.1-Problems, das in „Error in Node Default Data Loader

Guten Morgen @Rahul_Parmar
bitte teilen Sie Ihre JSON.

good morning, @tamy.santos

here is the json file.

@Rahul_Parmar
Ich habe keinen Fehler in deinem Code gefunden, es könnte eine Umgebungskompatibilität sein.
Ändere die typeversion auf 1.0, das zwingt den Loader, pdf-parse statt pdfjs-dist zu verwenden und eliminiert die DOM-Abhängigkeit, oder füge einen Code-Knoten als Polyfill vor dem Loader ein.

Ich habe das gleiche Problem wie oben berichtet (DOMMatrix is not defined). Wie du vorgeschlagen hast, habe ich den Data Loader auf Typeversion 1.0 zurückgesetzt, einen Recursive Character Text Splitter zum Node hinzugefügt, bekomme aber immer noch den Fehler (DOMMatrix is not defined).

(Ich habe n8n selbstgehostet und verwende Version 2.23.1, da ich wie die Person, die das ursprüngliche Problem gemeldet hat, ebenfalls das Problem mit pdf-parse v1.1 bekommen habe, das unter „Error in Node Default Data Loader

Hallo @atdev150, willkommen in der n8n-Community.
Jeder Fall ist ein Einzelfall, daher ist eine Bewertung deiner JSON nötig. Bitte öffne eine Frage, damit die Community dir direkt unterstützen kann, oder überprüfe, ob meine vorherige Antwort dir auch hilft.

Entschuldigung, ich poste zum ersten Mal :sweat_smile: .

Ich werde die Antworten von Rahul im Auge behalten, da ich denke, dass ich das gleiche Problem habe. Falls es nicht gelöst wird, werde ich eine neue Frage stellen. Vielen Dank, Tamy!

Zählen Sie auf uns :dizzy:

Guten Morgen, @tamy.santos

Hallo, @atdev150

Ich wollte nur wissen, auf welcher n8n-Version du das getestet hast. Hast du auch denselben Document Ingestion-Workflow verwendet? Konntest du ein PDF damit erfolgreich hochladen und verarbeiten?

@Rahul_Parmar 2.22.5

Heute wurde eine neue Version auf n8n Cloud @2.25.1 (Beta) veröffentlicht, aber es scheint, dass dieses Problem immer noch besteht. Ich warte aber immer noch auf den Fix :slightly_smiling_face:

Willkommen in der n8n-Community @BotRidwan
Es wird empfohlen, sich für die stabile Version statt der Beta zu entscheiden, gerade aus Gründen der Stabilität.

Während Sie auf den offiziellen Fix warten, besteht eine funktionierende Lösung für selbst gehostete Instanzen darin, den Document Loader-Node durch einen Code-Node zu ersetzen, der stattdessen pdf-parse verwendet. Wenn Sie NODE_FUNCTION_ALLOW_EXTERNAL=pdf-parse zu Ihren n8n-Umgebungsvariablen hinzufügen und das Paket im Container installieren, können Sie die PDF-Datei direkt analysieren, ohne die DOMMatrix-Abhängigkeit zu benötigen:

const pdfParse = require('pdf-parse');
const buffer = Buffer.from($binary.data, 'base64');
const result = await pdfParse(buffer);
return [{ json: { text: result.text } }];

Nicht so elegant wie der native Node, aber hebt die Blockierung der RAG-Pipeline auf, bis der Fix in der stabilen Version verfügbar ist.

Guten Tag, nach meinem Eindruck ist das Problem mit der Version Version 2.23.4 endgültig gelöst. Herzlichen Dank an alle, die die Sache nachdrücklich verfolgt haben! Gruß, Thomas

Tatsächlich ist das Problem noch nicht gelöst. Der “DOM Matrix is not defined”-Error taucht in der Version 2.25.7 wieder auf. In der Version 2.23.4 läuft der Workflow einwandfrei durch. Auch in der “inoffiziellen” Version 2.26.0 läuft der Workflow einwandfrei.