Sendgrid-nodejs: MailDataRequired requiere MailContent?

Creado en 7 mar. 2020  ·  19Comentarios  ·  Fuente: sendgrid/sendgrid-nodejs

Resumen de asuntos

Tengo un problema con Typecript porque no me permite crear un correo electrónico sin un campo de contenido. ¿Es correcto el MailDataRequired ?

Nunca solía enviar contenido con mis correos electrónicos. Solo sustituciones. El contenido / las plantillas viven en sus servidores.

Fragmento de código

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

Excepción / Registro

# paste exception/log here

Detalles técnicos:

  • Versión de sendgrid-nodejs: @ sendgrid / client @ ^ 6.5.3
duplicate

Comentario más útil

Por cierto: 6.5.0 no parece tener este extraño requisito de { 0: MailContent } , pero aún se requiere contenido.

Todos 19 comentarios

Por cierto: 6.5.0 no parece tener este extraño requisito de { 0: MailContent } , pero aún se requiere contenido.

viendo este también. actualicé mi paquete y ahora no estoy seguro de esto

Considerando esto como un duplicado de https://github.com/sendgrid/sendgrid-nodejs/issues/1056 , a menos que me equivoque.

1041 introducido en la versión 6.5.4 requería uno de text , html o content . Más tarde se señaló que también debería permitirse templateId por sí mismo. Esto se corrigió como parte # 1053 pero aún no se ha publicado.

@ childish-sambino esto sigue siendo un problema en 6.5.4 el tipo se define así:

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

Eso está haciendo que content una propiedad requerida, ¿hay alguna razón para eso cuando MailData define como una propiedad condicional? Lo arreglé pasando:

{...mailData, content: undefined}

1041 introducido en la versión 6.5.4 requería uno de text , html o content .

@ rodrigomf24 ¿ mailData no tiene uno de esos?

@ childish-sambino no solo un templateId y dynamicTemplateData

@ rodrigomf24

Más tarde se señaló que también debería permitirse templateId por sí mismo. Esto se corrigió como parte # 1053 pero aún no se ha publicado.

¿Se ha publicado esta corrección?

Acabo de obtener la versión 7.0.0 y todavía veo este error

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 esto ha cambiado en 7.0.0, ¿dónde está la documentación más reciente para la API de envío? No puedo encontrar mucho aquí. @ infantil-sambino

Gracias.

Sí, esto fue lanzado en 6.5.5

@ childish-sambino ¿Qué piensas acerca de exportar MailDataRequired del paquete @sendgrid/mail también?

@isaachinman No tengo ningún problema con eso. Si desea enviar un PR, puedo revisarlo.

@ childish-sambino Eché un vistazo y no estoy familiarizado con el enfoque del módulo de export = está tomando aquí . No tengo claro cómo se puede expandir esto sin introducir cambios importantes.

Feliz de ayudar si me puede indicar la dirección correcta.

Creo que esta línea se puede actualizar: https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/src/mail.d.ts#L37

Tal vez así:

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

No, eso no funcionará porque MailDataRequired ya es un tipo. El uso de declare const complica un poco las cosas.

Entonces, ¿solo , MailDataRequired: MailDataRequired }; ?

No, lo que estoy diciendo es que literalmente agrega un atributo MailDataRequired a la exportación predeterminada. Si probaste tu última sugerencia, obtendrás un error refers to a value, but is being used as a type .

No he visto ningún otro tipo de gestión de paquetes con este tipo de enfoque de módulo, por lo que realmente no puedo ofrecerle ninguna sugerencia. Necesita una forma de admitir exportaciones con nombre.

Normalmente, esperaría ver algo como esto:

export default mail
export { MailDataRequired }

@isaachinman Creo que esto (truco) debería solucionarlo: https://github.com/sendgrid/sendgrid-nodejs/pull/1102

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

murphman300 picture murphman300  ·  4Comentarios

amlcodes picture amlcodes  ·  4Comentarios

agostonbonomi picture agostonbonomi  ·  3Comentarios

prasoonjalan picture prasoonjalan  ·  3Comentarios

polkhovsky picture polkhovsky  ·  3Comentarios