描述問題/錯誤/問題
我已經在一個工作流上工作了一段時間,但已經有將近2週沒有觸碰它(最後一次修改大約在4月20日)。在這段時間內,我相信我們的實例已從 2.18.4 → 2.18.7(設置為自動更新)進行了更新,但我在發佈說明中沒有看到任何應該導致此問題的內容。之後我已更新到 2.19.2(自動更新沒有進行此更新,必須手動進行),但仍然看到相同的結果。如果需要,我會恢復,但如果某些功能已被有意更改/移除,如果我想升級的話,我需要修復這個問題……
工作流的初始步驟是
- 從電子郵件中隔離單個 PDF 附件
- 為 Claude 生成提示以處理該 PDF(代碼節點,js)
- 提交給 Claude(http)
一直有效的生成提示的代碼是:
const binaryData = $input.item.binary.attachment_0;
const buffer = await this.helpers.getBinaryDataBuffer(0, 'attachment_0');
const base64Pdf = buffer.toString('base64');
const body = {
model: 'claude-sonnet-4-6',
max_tokens: 2000,
messages: [
{
role: 'user',
content: [
{
type: 'document',
source: {
type: 'base64',
media_type: 'application/pdf',
data: base64Pdf
}
},
{
type: 'text',
text: '從此 PDF 中提取以下數據:-採購訂單號 -發貨日期 -發票號 -已訂購項目陣列。包括戴爾零件號(不包括「Dell」一詞)、說明、序列號和延伸淨價。只返回原始 JSON,沒有 markdown、沒有說明、沒有代碼籬笆。'
}
]
}
]
};
return [{
json: { body: JSON.stringify(body) }
}];
結果為:

隔離 PDF 的初始步驟使用此代碼:
const binary = $input.item.binary;
// 查找 PDF 附件的鍵
const pdfKey = Object.keys(binary).find(
key => binary[key].mimeType === 'application/pdf'
);
if (!pdfKey) {
throw new Error('在此電子郵件中找不到 PDF 附件');
}
return [{
json: $input.item.json, // 原封不動地通過電子郵件數據
binary: {
attachment_0: binary[pdfKey] // 將其重命名為可預測的鍵
}
}];
結果為 attachment_0
但是在大約2週後返回此工作流後,該生成提示步驟現在導致未知錯誤。我已嘗試使用各種其他 js 代碼修復它,但無法重新創建我需要的內容。我對 JS 的熟悉度處於業餘水平,但 Claude 在生成代碼方面一直很棒。我經歷了多次迭代但仍然沒有運氣。
您的 n8n 設置信息
- n8n 版本:2.18.7 - 2.19.2(自託管)
- 資料庫(預設:SQLite):
- n8n EXECUTIONS_PROCESS 設置(預設:own、main):
- 透過以下方式運行 n8n(Docker、npm、n8n cloud、桌面應用):docker
- 作業系統: