嗨各位,
我在自託管 n8n 上的 Gemini RAG 工作流中使用 Document Loader 節點內嵌 PDF 檔案時遇到了一個問題。
工作流:
Webhook
→ Read/Write Files from Disk
→ Document Loader
→ Vector Store Insert
PDF 檔案被成功偵測並以二進位資料傳遞到 Document Loader 節點,但該節點在解析 PDF 時失敗。
CSV 內嵌工作正常。該問題僅在 PDF 上發生。
錯誤:
DOMMatrix is not defined
Document Loader 節點收到的輸入:
{
"mimeType": "application/pdf",
"fileType": "pdf",
"fileName": "agents.pdf",
"fileExtension": "pdf",
"fileSize": "2.03 MB"
}
Document Loader 設定:
環境:
你能回退到 2.21.7 嗎,@Rahul_Parmar?2.23 仍處於測試版
@Rahul_Parmar 已知的回歸問題,自 n8n 1.98 以來,當 pdfjs-dist 升級到需要瀏覽器 API(如 DOMMatrix)的版本時出現——GitHub 上有多個開放問題(#16593、#16438、#16422)。在 2.23.0 上可行的解決方案,無須降級:跳過 Document Loader 處理 PDF,改用 Code 節點搭配 pdf-parse npm 套件。在環境變數中設定 NODE_FUNCTION_ALLOW_EXTERNAL=pdf-parse,在 Code 節點中提取文字,將提取的文字直接傳入 Vector Store Insert。妳的其餘工作流程是否大量依賴 Document Loader 本身,還是只用它來進行 PDF 文字提取?
我之前使用的是 2.21.7,但由於在「節點預設資料加載器錯誤」中回報的 pdf-parse v1.1 問題而進行升級,該問題似乎已在 2.23.0 中修正。
但升級後,我現在在 Document Loader 節點中進行 PDF 提取時遇到 DOMMatrix is not defined 錯誤。
將等待穩定版本發布。
參考資料:
- 2.23 · Releases · n8n-io/n8n · GitHub
- Pdf-parse v1.1 Error in Node Default Data Loader - #5 by tamy.santos
早安 @Rahul_Parmar
請分享你的 JSON。
good morning, @tamy.santos
here is the json file.
@Rahul_Parmar
我沒有發現你的程式碼有缺陷,可能是環境相容性的問題。
將 typeversion 改為 1.0,這會強制載入器使用 pdf-parse 而不是 pdfjs-dist,消除對 DOM 的依賴,或者在載入器之前新增一個 Code 節點作為 polyfill。
我遇到了上面報告的相同問題(DOMMatrix 未定義)。按照你的建議,我已經將 Data Loader 還原為 typeversion 1.0,在節點中添加了 Recursive Character Text Splitter,但我仍然收到(DOMMatrix 未定義)的錯誤。
(我有自託管的 n8n,並且我使用的是版本 2.23.1,因為作為發布原始問題的人,我也遇到了在「Error in Node Default Data Loader」中報告的 pdf-parse v1.1 問題。
嗨 @atdev150,歡迎來到 n8n 社群。
每個案例都不同,需要評估你的 JSON。請開一個問題讓社群可以直接協助你,或者檢查我之前的回答是否對你有幫助。
抱歉,第一次發文
。
我會留意 Rahul 的回應,因為我認為我有相同的問題,如果沒有解決,我會開一個新問題。非常感謝 Tamy!
早上好,@tamy.santos
你好,@atdev150
我只是想知道你在哪個 n8n 版本上測試過。另外,你是否使用了相同的 Document Ingestion 工作流程?你能否成功使用它上傳並處理 PDF 文件?
今天在 n8n cloud 上發布了新版本 @2.25.1 (測試版),但這個問題似乎仍然存在。不過還在等待修復 
歡迎來到 n8n 社群 @BotRidwan
基於穩定性考慮,建議選擇穩定版本而不是測試版。
在等待官方修正期間,自託管上的一個可行的解決方案是將 Document Loader 節點替換為使用 pdf-parse 的 Code 節點。如果你將 NODE_FUNCTION_ALLOW_EXTERNAL=pdf-parse 新增到 n8n 環境變數,並在容器中安裝該套件,你可以直接解析 PDF 二進制檔案,無需 DOMMatrix 依賴:
const pdfParse = require('pdf-parse');
const buffer = Buffer.from($binary.data, 'base64');
const result = await pdfParse(buffer);
return [{ json: { text: result.text } }];
雖然不如原生節點那麼簡潔,但可以在修正穩定版本前解除 RAG 管線的阻礙。
您好,根據我的了解,版本 2.23.4 的問題已經徹底解決。衷心感謝所有積極跟進此事的人!祝好,Thomas
實際上該問題尚未解決。在版本 2.25.7 中,「DOM Matrix is not defined」錯誤重新出現。在版本 2.23.4 中,工作流程可以順利運行。在「非官方」版本 2.26.0 中,工作流程也能順利運行。