Sendgrid-nodejs: MailDataRequired membutuhkan MailContent?

Dibuat pada 7 Mar 2020  ·  19Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Ringkasan Masalah

Saya mengalami masalah dengan TypeScript karena tidak memungkinkan saya membuat email tanpa bidang konten. Apakah MailDataRequired benar?

Saya tidak pernah mengirim konten dengan email saya. Hanya pergantian pemain. Konten / template hidup di server Anda.

Cuplikan Kode

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

Pengecualian/Log

# paste exception/log here

Detail teknis:

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

Komentar yang paling membantu

BTW: 6.5.0 tampaknya tidak memiliki persyaratan { 0: MailContent } aneh ini, tetapi konten tetap diperlukan.

Semua 19 komentar

BTW: 6.5.0 tampaknya tidak memiliki persyaratan { 0: MailContent } aneh ini, tetapi konten tetap diperlukan.

nonton yang ini juga. memperbarui paket saya dan sekarang tidak yakin tentang ini

Mempertimbangkan ini sebagai duplikat dari https://github.com/sendgrid/sendgrid-nodejs/issues/1056 , kecuali saya salah.

1041 yang diperkenalkan dalam rilis 6.5.4 memerlukan salah satu dari text , html , atau content . Kemudian ditunjukkan bahwa templateId dengan sendirinya juga harus diizinkan. Ini telah diperbaiki sebagai bagian #1053 tetapi belum dirilis.

@childish-sambino ini masih menjadi masalah pada 6.5.4 jenisnya didefinisikan seperti ini:

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

Itu membuat content properti yang diperlukan, apakah ada alasan untuk itu ketika MailData mendefinisikannya sebagai properti bersyarat? Saya memperbaikinya dengan melewati:

{...mailData, content: undefined}

1041 yang diperkenalkan dalam rilis 6.5.4 memerlukan salah satu dari text , html , atau content .

@rodrigomf24 Apakah mailData tidak memilikinya?

@childish-sambino tidak hanya templateId dan dynamicTemplateData

@rodrigoomf24

Kemudian ditunjukkan bahwa templateId dengan sendirinya juga harus diizinkan. Ini telah diperbaiki sebagai bagian #1053 tetapi belum dirilis.

Apakah perbaikan ini dirilis?

Saya baru saja mendapatkan versi 7.0.0 dan saya masih melihat kesalahan ini

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.

Jika ini telah berubah di 7.0.0, di mana dokumentasi terbaru untuk api kirim? Tidak dapat menemukan banyak di sini. @kekanak-kanakan-sambino

Terima kasih.

Ya, ini dirilis pada 6.5.5

@childish-sambino Apa pendapat Anda tentang mengekspor MailDataRequired dari paket @sendgrid/mail juga?

@isaachinman saya tidak masalah dengan itu. Jika Anda ingin mengirimkan PR, saya dapat meninjaunya.

@childish-sambino Saya melihat-lihat, dan saya tidak terbiasa dengan pendekatan modul export = yang diambil di sini . Saya tidak jelas tentang bagaimana ini dapat diperluas tanpa memperkenalkan perubahan yang melanggar.

Senang membantu jika Anda dapat mengarahkan saya ke arah yang benar.

Pikirkan baris ini hanya dapat diperbarui: https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/src/mail.d.ts#L37

Seperti ini mungkin:

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

Tidak, itu tidak akan berfungsi karena MailDataRequired sudah menjadi tipe. Penggunaan declare const membuat segalanya sedikit rumit.

Lalu hanya , MailDataRequired: MailDataRequired }; ?

Tidak, yang saya katakan adalah bahwa secara harfiah menambahkan atribut MailDataRequired ke ekspor default. Jika Anda mencoba saran terbaru Anda, Anda akan mendapatkan kesalahan refers to a value, but is being used as a type .

Saya belum melihat paket lain yang mengelola jenis dengan pendekatan modul semacam ini, jadi saya tidak bisa menawarkan saran apa pun kepada Anda. Anda memerlukan cara untuk mendukung ekspor bernama.

Biasanya saya berharap melihat sesuatu seperti ini:

export default mail
export { MailDataRequired }

@isaachinman Pikirkan ini (retas) harus memperbaikinya: https://github.com/sendgrid/sendgrid-nodejs/pull/1102

Apakah halaman ini membantu?
0 / 5 - 0 peringkat