Sendgrid-nodejs: يتطلب MailDataRequired محتوى MailContent؟

تم إنشاؤها على ٧ مارس ٢٠٢٠  ·  19تعليقات  ·  مصدر: sendgrid/sendgrid-nodejs

ملخص القضية

أواجه مشكلة في Typescript لأنها لا تسمح لي بإنشاء بريد إلكتروني بدون حقل محتوى. هل MailDataRequired صحيح؟

لم أكن معتادًا على إرسال المحتوى مع رسائل البريد الإلكتروني الخاصة بي. بدائل فقط. المحتوى / القوالب موجودة على خوادمك.

مقتطف الرمز

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

استثناء / سجل

# paste exception/log here

تفاصيل تقنية:

  • إصدار sendgrid-nodejs: @ sendgrid / client @ ^ 6.5.3
duplicate

التعليق الأكثر فائدة

راجع للشغل: 6.5.0 لا يبدو أنه يحتوي على هذا المطلب الغريب { 0: MailContent } ، لكن لا يزال المحتوى مطلوبًا.

ال 19 كومينتر

راجع للشغل: 6.5.0 لا يبدو أنه يحتوي على هذا المطلب الغريب { 0: MailContent } ، لكن لا يزال المحتوى مطلوبًا.

مشاهدة هذا أيضا. قمت بتحديث الحزمة الخاصة بي والآن لست متأكدًا من ذلك

اعتبار هذا نسخة مكررة من https://github.com/sendgrid/sendgrid-nodejs/issues/1056 ، إلا إذا كنت مخطئًا.

يتطلب الإصدار 1041 المقدم في الإصدار 6.5.4 واحدًا من text أو html أو content . تمت الإشارة لاحقًا إلى أنه يجب أيضًا السماح باستخدام templateId حد ذاته. تم إصلاح هذا باعتباره الجزء رقم 1053 ولكن لم يتم إصداره بعد.

@ childish-sambino لا تزال هذه مشكلة على 6.5.4 النوع محدد على النحو التالي:

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

هذا يجعل من content خاصية مطلوبة ، فهل هناك سبب لذلك عندما يقوم MailData بتعريفه كخاصية شرطية؟ أصلحته بالتمرير:

{...mailData, content: undefined}

يتطلب الإصدار 1041 المقدم في الإصدار 6.5.4 واحدًا من text أو html أو content .

@ rodrigomf24 لا تملك mailData واحدة من هؤلاء؟

@ childish-sambino ليس فقط templateId و dynamicTemplateData

MustafaHosny اللهم امين

تمت الإشارة لاحقًا إلى أنه يجب السماح أيضًا بـ templateId في حد ذاته. تم إصلاح هذا باعتباره الجزء رقم 1053 ولكن لم يتم إصداره بعد.

هل صدر هذا الإصلاح؟

لقد حصلت للتو على الإصدار 7.0.0 وما زلت أرى هذا الخطأ

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.

إذا كان هذا قد تغير في 7.0.0 ، فأين أحدث وثائق API للإرسال من فضلك؟ لا أجد الكثير هنا. @ طفولية سامبينو

شكرا.

نعم ، تم إصدار هذا في 6.5.5

@ childish-sambino ما رأيك في تصدير MailDataRequired من الحزمة @sendgrid/mail أيضًا؟

isaachinman ليس لدي مشكلة مع ذلك. إذا كنت ترغب في تقديم PR يمكنني مراجعته.

@ childish-sambino لقد ألقيت نظرة حولنا ، ولست على دراية بنهج الوحدة من export = الذي يتم أخذه هنا . لست واضحًا بشأن كيفية توسيع هذا دون إدخال تغييرات جذرية.

يسعدني مساعدتك إذا كنت تستطيع توجيهي في الاتجاه الصحيح.

أعتقد أنه يمكن تحديث هذا السطر فقط: https://github.com/sendgrid/sendgrid-nodejs/blob/master/packages/mail/src/mail.d.ts#L37

مثل هذا ربما:

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

لا ، هذا لن يعمل لأن MailDataRequired هو نوع بالفعل. استخدام declare const يجعل الأمور معقدة بعض الشيء.

ثم فقط , MailDataRequired: MailDataRequired }; ؟

لا ، ما أقوله هو أنه يضيف حرفياً سمة MailDataRequired إلى التصدير الافتراضي. إذا جربت اقتراحك الأخير ، فسيظهر لك خطأ refers to a value, but is being used as a type .

لم أر أي حزم أخرى تدير الأنواع باستخدام هذا النوع من نهج الوحدة النمطية ، لذلك لا يمكنني حقًا تقديم أي اقتراحات لك. أنت بحاجة إلى طريقة لدعم الصادرات المسماة.

عادةً ما أتوقع أن أرى شيئًا كهذا:

export default mail
export { MailDataRequired }

isaachinman أعتقد أن هذا (الاختراق) يجب أن يصلحه: https://github.com/sendgrid/sendgrid-nodejs/pull/1102

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

danielflippance picture danielflippance  ·  4تعليقات

polkhovsky picture polkhovsky  ·  3تعليقات

Loriot-n picture Loriot-n  ·  4تعليقات

umarhussain15 picture umarhussain15  ·  3تعليقات

thinkingserious picture thinkingserious  ·  4تعليقات