Le nœud QuickBooks « Envoyer une facture » échoue avant d’envoyer la demande.
Erreur :
TypeError: Cannot set properties of undefined (setting ‘Content-Type’)
Trace de la pile :
TypeError: Cannot set properties of undefined (setting ‘Content-Type’)
at ExecuteContext.quickBooksApiRequest
(…/nodes/QuickBooks/GenericFunctions.ts:70:35)
Comportement Attendu
Le nœud devrait envoyer la facture avec succès en utilisant l’API QuickBooks.
Étapes à Reproduire
Créez une facture.
Ajoutez un nœud QuickBooks « Envoyer une facture ».
Fournissez un ID de facture valide.
Fournissez une adresse e-mail valide.
Exécutez le nœud.
Environnement
Version n8n : 2.29.9
Déploiement : Auto-hébergé
Mode Binary Data : filesystem
Informations Supplémentaires
La même erreur se produit sur les instances locales et auto-hébergées.
Les ID de facture et adresse e-mail codés en dur produisent la même erreur.
L’échec se produit avant que la demande n’atteigne QuickBooks.
La documentation de l’API QuickBooks spécifie Content-Type: application/octet-stream pour ce point de terminaison.
Salut @ankitsingh3112 Bienvenue !
Cette pile d’appels se trouve dans le code du nœud lui-même (quickBooksApiRequest dans GenericFunctions.ts:70), où il définit Content-Type sur un objet headers qui est indéfini. C’est pourquoi Send Invoice lance une erreur avant que toute requête ne quitte n8n. C’est un bug dans le nœud, pas dans votre configuration, ce qui explique pourquoi les ID codés en dur et les deux instances échouent de la même manière.
En attendant le correctif, contournez l’opération avec un nœud HTTP Request en utilisant votre identifiant OAuth2 QuickBooks Online (Authentication: Predefined Credential Type). Envoyez un corps vide au point de terminaison d’envoi avec l’en-tête octet-stream, en plaçant votre ID d’entreprise (realm), l’ID de facture et le destinataire dans l’URL :
POST https://quickbooks.api.intuit.com/v3/company/{realmId}/invoice/{invoiceId}/send?sendTo={email}
Header Content-Type: application/octet-stream
Si cet appel revient avec 401, c’est un problème connu distinct avec l’identifiant QBO sur le nœud HTTP Request, pas ce point de terminaison :
Cela vaut le coup de consigner le bug du nœud pour qu’il soit corrigé :
@ankitsingh3112 salut ! si tu rencontres cette erreur 401 d’autorisation en utilisant l’identifiant QBO prédéfini sur le nœud HTTP Request, c’est parce que n8n ne déclenche pas correctement le flux de rafraîchissement du jeton pour les modules HTTP personnalisés.
le moyen rapide de contourner l’erreur 401 est d’utiliser l’authentification Generic OAuth2 à la place de l’identifiant QBO prédéfini dans le nœud HTTP Request.
définis l’Authorization URL sur : https://appcenter.intuit.com/connect/oauth2
et l’Access Token URL sur : https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer
puis entre ton identifiant client QBO et ton secret. une fois autorisé de cette façon, la requête POST vers le point de terminaison /send s’authentifiera avec succès à chaque fois. fais-moi savoir si tu as besoin d’aide pour configurer les paramètres OAuth2 personnalisés !
Nous avons examiné cela et il semble que cela pourrait être corrigé dans une version récente. Veuillez mettre à jour et voir si vous rencontrez toujours le même problème.
J’apprécie cette clarification. Ce genre d’erreurs peut être confus quand elles ressemblent à des problèmes de configuration, donc avoir la cause racine expliquée rend la résolution des problèmes beaucoup plus facile.