Sendgrid-nodejs: MailDataRequired nécessite MailContent ?

Créé le 7 mars 2020  ·  19Commentaires  ·  Source: sendgrid/sendgrid-nodejs

Résumé de la question

Je rencontre un problème avec Typescript car il ne me permet pas de créer un e-mail sans champ de contenu. Le MailDataRequired correct ?

Je n'avais jamais l'habitude d'envoyer du contenu avec mes e-mails. Uniquement des remplacements. Le contenu/les modèles vivent sur vos serveurs.

Extrait de code

export type MailDataRequired = MailData & (
    { text: string } | { html: string } | { templateId: string } | { content: MailContent[] & { 0: MailContent } });

Exception/Journal

# paste exception/log here

Détails techniques:

  • version sendgrid-nodejs : @sendgrid/client@^6.5.3
duplicate

Commentaire le plus utile

BTW: 6.5.0 ne semble pas avoir cette exigence étrange de { 0: MailContent } , mais le contenu est toujours requis.

Tous les 19 commentaires

BTW: 6.5.0 ne semble pas avoir cette exigence étrange de { 0: MailContent } , mais le contenu est toujours requis.

regarder celui-ci aussi. mis à jour mon paquet et maintenant pas sûr à ce sujet

Considérant cela comme un doublon de https://github.com/sendgrid/sendgrid-nodejs/issues/1056 , sauf erreur de ma part.

1041 introduit dans la version 6.5.4 nécessitait l'un de text , html , ou content . Il a été souligné plus tard que templateId en lui-même devrait également être autorisé. Cela a été corrigé dans la partie #1053 mais n'a pas encore été publié.

@childish-sambino c'est toujours un problème sur 6.5.4 le type est défini comme ceci :

type MailDataRequired = MailData & (
  { text: string } | { html: string } | { content: MailContent[] & { 0: MailContent } });

Cela fait de content une propriété obligatoire, y a-t-il une raison à cela lorsque MailData définit comme une propriété conditionnelle ? Je l'ai corrigé en passant :

{...mailData, content: undefined}

1041 introduit dans la version 6.5.4 nécessitait l'un de text , html , ou content .

@rodrigomf24 Est- mailData n'en a pas un ?

@childish-sambino non seulement un templateId et dynamicTemplateData

@rodrigomf24

Il a été souligné plus tard que templateId en lui-même devrait également être autorisé. Cela a été corrigé dans la partie #1053 mais n'a pas encore été publié.

Ce correctif est-il publié ?

Je viens de recevoir la version 7.0.0 et je vois toujours cette erreur

TSError: ⨯ Unable to compile TypeScript: src/email-templates/verification-email-template.ts(15,25): error TS2769: No overload matches this call. Overload 1 of 2, '(data: MailDataRequired, isMultiple?: boolean | undefined, cb?: ((err: Error | ResponseError, result: [ClientResponse, {}]) => void) | undefined): Promise<...>', gave the following error.

Si cela a changé dans 7.0.0, où se trouve la dernière documentation pour l'API d'envoi, s'il vous plaît ? On ne trouve pas grand chose ici. @childish-sambino

Merci.

Oui, cela a été publié en 6.5.5

@childish-sambino Que pensez-vous de l'exportation de MailDataRequired partir du package @sendgrid/mail ?

@isaachinman Je n'ai aucun problème avec ça. Si vous souhaitez soumettre un PR, je peux l'examiner.

@childish-sambino J'ai jeté un coup d'œil autour de moi et je ne suis pas familier avec l'approche par module de export = utilisée ici . Je ne sais pas comment cela peut être étendu sans introduire de changements de rupture.

Heureux d'aider si vous pouvez m'orienter dans la bonne direction.

Je pense que cette ligne peut simplement être mise à jour : https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/src/mail.d.ts#L37

Comme ça peut-être :

declare const mail: MailService & { MailService: typeof MailService, MailDataRequired: typeof MailDataRequired };

Non, cela ne fonctionnera pas car MailDataRequired est déjà un type. L'utilisation de declare const rend les choses un peu compliquées.

Alors juste , MailDataRequired: MailDataRequired }; ?

Non, ce que je dis, c'est que cela ajoute littéralement un attribut MailDataRequired à l'exportation par défaut. Si vous essayez votre dernière suggestion, vous obtiendrez une erreur refers to a value, but is being used as a type .

Je n'ai vu aucun autre package gérer les types avec ce type d'approche de module, je ne peux donc pas vraiment vous proposer de suggestions. Vous avez besoin d'un moyen de prendre en charge les exportations nommées.

Normalement, je m'attendrais à voir quelque chose comme ça :

export default mail
export { MailDataRequired }

@isaachinman Je pense que ce (piratage) devrait résoudre le problème : https://github.com/sendgrid/sendgrid-nodejs/pull/1102

Cette page vous a été utile?
0 / 5 - 0 notes