分享了以下工作流程。問題似乎出現在「sub-node Default Data Loader」中,返回的錯誤為:
遇到錯誤:
{
“errorMessage”: “DOMMatrix is not defined”,
“errorDescription”: “DOMMatrix is not defined”,
“errorDetails”: {},
“n8nDetails”: {
“time”: “6/15/2026, 5:38:18 PM”,
“n8nVersion”: “2.25.7 (Self Hosted)”,
“binaryDataMode”: “filesystem”
}
}
描述問題/錯誤/提問
錯誤訊息是什麼(如果有的話)?
{
“nodes”: [
{
“parameters”: {
“dataType”: “binary”,
“loader”: “pdfLoader”,
“textSplittingMode”: “custom”,
“options”: {
“metadata”: {
“metadataValues”: [
{
“name”: “doc_source_name”,
“value”: “={{ $json.name }}”
}
]
}
}
}
},
“type”: “@n8n/n8n-nodes-langchain.documentDefaultDataLoader”,
“typeVersion”: 1.1,
“position”: [
0,
208
],
“id”: “94e61ba6-ff2b-451b-acdb-2ab9c95bc8bb”,
“name”: “Default Data Loader”
}
],
“connections”: {
“Default Data Loader”: {
“ai_document”: [
]
}
},
“pinData”: {},
“meta”: {
“templateCredsSetupCompleted”: true,
“instanceId”: “6b7bae030020701da6f16995313279c534f558d128bf33497924651920013cb9”
}
}
關於您的 n8n 設定的資訊
- n8n 版本:
- 資料庫(預設:SQLite):
- n8n EXECUTIONS_PROCESS 設定(預設:own, main):
- 透過以下方式執行 n8n(Docker、npm、n8n cloud、桌面應用程式):
- 作業系統:
歡迎 @subroto !
你的錯誤來自預設資料載入器在後台使用 loader: "pdfLoader",這會觸發 pdfjs 相依性,而它期望瀏覽器 API(如 DOMMatrix)在伺服器/Docker 中無法使用。這是關於 pdf 載入器的已知錯誤,已在最近的 n8n 版本中修復,所以首先請確保你的實例確實在執行最新映像(拉取你期望的標籤並重新啟動容器)。作為解決方案,你可以完全跳過 PDF 載入器:在預設資料載入器之前添加一個「從檔案中提取」節點,將其設定為「從檔案中讀取文字」,然後將預設資料載入器資料類型變更為 JSON 或文字,並將提取的文字映射到其中。這樣載入器只會處理純文字,永遠不會涉及有問題的 pdfjs 程式碼。如果你已經在最新版本上,並且在乾淨拉取後仍然看到 DOMMatrix 錯誤,值得分享你確切的 Docker 映像標籤和資料載入器之前的節點,這樣我們可以再次檢查。
感謝你的建議。
我能夠解決 DOMMatrix 錯誤,工作流程已成功運行。我可以在 Pinecone Vector Store 的輸出端看到 24 個項目
不過,我在 Pinecone 網站上沒有看到我的索引已更新。(附上截圖)
非常感謝,
(attachments)
很高興解決方案解決了 DOMMatrix 的問題。關於 Pinecone 索引未更新的問題 - 有幾項內容需要驗證:首先,確認 Pinecone Vector Store 節點中的索引名稱和命名空間與您在 Pinecone 控制面板上看到的完全相符(區分大小寫)。其次,檢查您的 Pinecone API 金鑰是否已適當限制範圍至正確的專案/環境。第三,打開 Pinecone 控制面板並切換到正確的索引 - 有時預設檢視會顯示不同的索引。如果節點在輸出中返回了 24 個項目且沒有錯誤,則更新插入(upsert)很可能已被接受,所以命名空間不相符是最常見的原因。
您好!
感謝您的建議。由於我只有一個索引,且在建立索引時並未建立命名空間,我在 n8n 中使用了 Pinecone Namespace=“default”。不過這並沒有解決問題。我正在按照 Pinecone 文件建立新的命名空間,稍後會再試一次,並會回覆您。再次感謝。
針對 Pinecone,不要將命名空間測試為帶有空格的字串 default。Pinecone 使用 __default__ 作為預設命名空間;如果你建立自訂命名空間,就必須在 n8n Pinecone 節點和儀表板篩選器中使用完全相同的值。
驗收檢查不再是 Data Loader 輸出。執行一次 upsert,使用固定的 id(例如 test-001),然後在 __default__ 和你輸入的命名空間中列出/查詢該 id。如果它只出現在一個位置,則工作流程寫入正確,儀表板在查看不同的命名空間。
由於 DOMMatrix 部分已經被繞過,且 n8n 顯示 24 個輸出項目,我會停止使用 Pinecone 儀表板作為第一個驗證點。
接下來的分支是:
- n8n 生成了分塊但沒有執行 upsert;
- Pinecone 接受了 upsert,但它們落在不同的命名空間/索引/專案中;
- Pinecone 接受了它們,但儀表板篩選器沒有顯示你寫入的命名空間。
我會執行的最小驗證測試:
- 使用一個很小的文字輸入,而不是 PDF;
- 設定一個固定的 id,比如 test-001;
- 明確將命名空間設定為 default 或簡單的自訂值,比如 n8n_test;
- 包含一個明顯的中繼資料欄位,例如 source: n8n_probe;
- 立即在該確切的命名空間中執行 Pinecone 查詢/擷取 test-001。
如果 fetch/query 找到 test-001,則工作流程寫入正確,問題在於儀表板/索引/命名空間的可見性。
如果 fetch/query 找不到 test-001,則問題發生在 upsert 之前或期間:索引名稱、專案/API 金鑰範圍、嵌入維度不匹配,或向量存儲節點沒有接收到你認為它接收的項目。
我還會避免使用包含空格或引號的命名空間值。使用 default 或 n8n_test 進行測試,以便從診斷中移除一個變數。