Der QuickBooks “Rechnung senden”-Knoten schlägt fehl, bevor die Anfrage gesendet wird.
Fehler:
TypeError: Cannot set properties of undefined (setting ‘Content-Type’)
Stack Trace:
TypeError: Cannot set properties of undefined (setting ‘Content-Type’)
at ExecuteContext.quickBooksApiRequest
(…/nodes/QuickBooks/GenericFunctions.ts:70:35)
Erwartetes Verhalten
Der Knoten sollte die Rechnung erfolgreich über die QuickBooks-API senden.
Schritte zum Reproduzieren
Erstelle eine Rechnung.
Füge einen QuickBooks “Rechnung senden”-Knoten hinzu.
Gib eine gültige Rechnungs-ID an.
Gib eine gültige E-Mail-Adresse an.
Führe den Knoten aus.
Umgebung
n8n-Version: 2.29.9
Bereitstellung: Selbstgehostet
Binary Data Mode: Dateisystem
Zusätzliche Informationen
Der gleiche Fehler tritt sowohl auf lokalen als auch auf selbstgehosteten Instanzen auf.
Hardcodierte Rechnungs-ID und E-Mail-Adresse erzeugen denselben Fehler.
Der Fehler tritt auf, bevor die Anfrage QuickBooks erreicht.
Die QuickBooks-API-Dokumentation gibt Content-Type: application/octet-stream für diesen Endpunkt an.
Hallo @ankitsingh3112 Willkommen!
Dieser Stack Trace landet im eigenen Code des Knotens (quickBooksApiRequest in GenericFunctions.ts:70), wo er Content-Type auf einem undefined Headers-Objekt setzt, sodass Send Invoice fehlschlägt, bevor eine Anfrage n8n verlässt. Es ist ein Bug im Knoten, nicht in deinem Setup, weshalb hartcodierte IDs und beide Instanzen auf die gleiche Weise fehlschlagen.
Bis der Patch verfügbar ist, umgehe die Operation mit einem HTTP Request-Knoten unter Verwendung deiner QuickBooks Online OAuth2-Berechtigung (Authentication: Predefined Credential Type). Sende einen leeren Body an den Send-Endpoint mit dem octet-stream-Header und gib deine Company (Realm) ID, Invoice ID und Empfänger in die URL ein:
POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice/{invoiceId}/send?sendTo={email}
Header Content-Type: application/octet-stream
Falls dieser Aufruf mit 401 zurückkommt, ist das ein separates bekanntes Problem mit der QBO-Berechtigung beim HTTP Request-Knoten, nicht bei diesem Endpoint:
Es lohnt sich, den Node-Bug zu protokollieren, damit er behoben wird:
@ankitsingh3112 hey! Falls du bei der Verwendung der vordefinierten QBO-Anmeldedaten auf dem HTTP Request-Knoten auf einen 401-Autorisierungsfehler stößt, liegt das daran, dass n8n den Token-Aktualisierungsfluss für benutzerdefinierte HTTP-Module nicht korrekt auslöst.
Die schnelle Möglichkeit, den 401 zu umgehen, ist die Verwendung der Generic OAuth2-Authentifizierung anstelle der vordefinierten QBO-Anmeldedaten im HTTP Request-Knoten.
Stelle die Authorization URL auf: https://appcenter.intuit.com/connect/oauth2
und die Access Token URL auf: https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer
Geben dann deine QBO-Client-ID und dein Geheimnis ein. Nach der Autorisierung auf diese Weise wird die POST-Anfrage an den /send-Endpunkt jedes Mal erfolgreich authentifiziert. Gib mir Bescheid, falls du Probleme beim Einrichten der benutzerdefinierten OAuth2-Parameter hast!
Wir haben uns das angesehen und es sieht so aus, als könnte es in einem kürzlichen Release behoben worden sein. Bitte aktualisieren Sie und schauen Sie, ob Sie immer noch auf das gleiche Problem stoßen.
Ich schätze die Klarstellung sehr. Diese Art von Fehlern kann verwirrend sein, wenn sie wie Setup-Probleme aussehen, daher hilft es sehr, die Grundursache erklärt zu bekommen, um sie leichter beheben zu können.