Sendgrid-nodejs: Galat Sintaks Tidak Tertangkap: Token tak terduga <(di lib / sendgrid.js dipicu pada objek respons)

Dibuat pada 16 Nov 2016  ·  10Komentar  ·  Sumber: sendgrid/sendgrid-nodejs

Ringkasan Masalah

Setelah mengirimkan email template menggunakan utilitas pembantu email SendGrid. Respons server dari SendGrid's API mengembalikan JSON yang tidak valid menurut pembungkus ini (sendgrid-nodejs).

Uncaught SyntaxError: Unexpected token <
      at Object.parse (native)
      at node_modules/sendgrid/lib/sendgrid.js:110:42
      at IncomingMessage.<anonymous> (node_modules/sendgrid/node_modules/sendgrid-rest/lib/client.js:108:9)
      at endReadableNT (_stream_readable.js:921:12)

Baris 110 adalah:

  //Use callback
  self.client.API(request, function(response) {
    response.body = response.body ? JSON.parse(response.body) : response.body;

Langkah-langkah untuk Mereproduksi

  1. Pastikan paket node sendgrid -> "sendgrid": "^ 4.7.1",
  2. Buat template dengan substitusi di SendGrid dan aktifkan template itu
  3. Buat email lengkap untuk template menggunakan email helper. terapkan .toJSON di akhir.

Contoh:

const BaseWelcomeEmail = (function(){
    const helper = require('sendgrid').mail,
        from_email = new helper.Email(testEmail),
        to_email = new helper.Email(testEmail),
        subject = "Welcome to Bedly",
        content = new helper.Content("text/plain", "hello"),

        mail = new helper.Mail(from_email, subject, to_email, content),
        personalization = new helper.Personalization();

    let substitution = new helper.Substitution(":firstname", "Aaron");

    personalization.addSubstitution(substitution);
    substitution = new helper.Substitution(":lastname", "Elk");
    personalization.addSubstitution(substitution);
    substitution = new helper.Substitution(":address", "96 Washington Avenue");
    personalization.addSubstitution(substitution);
    substitution = new helper.Substitution(":neighborhood", "Washington Heights");
    personalization.addSubstitution(substitution);
    substitution = new helper.Substitution(":unitNumber", "N/A");
    personalization.addSubstitution(substitution);
    substitution = new helper.Substitution(":roomNumber", "2J");
    personalization.addSubstitution(substitution);

    mail.addPersonalization(personalization);

    return mail;
})();

Anda bahkan dapat membuat tes mocha, saya menjalankan ini dari lingkungan pengujian ini:

    describe('Test Email Template', function () {
        it('test template ${TEMPLATE_ID} is active and is complete', function (done) {
            BaseWelcomeEmail.setTemplateId(TEMPLATE_ID);
            SendEmailImpl.sendEmail(BaseWelcomeEmail.toJSON(), done, function(error, response){
                assert_OKResponse(error, response, done);
            });
        });
    });

Fungsi sendEmail berisi penyiapan POST V3 normal untuk memanggil API seperti yang dijelaskan dalam dokumen.

Detail teknis:

  • sendgrid-nodejs Versi: 4.7.1
  • Versi Node.js: 4.6.1
help wanted bug

Komentar yang paling membantu

Bah! Telah mendapatkan masalah ini selama beberapa jam. Ternyata jalur tersebut peka terhadap garis miring di depan.

var request = sendgrid.emptyRequest({
    method: 'POST',
    path: '/v3/mail/send',
    body: mail.toJSON()
});

vs.

var request = sendgrid.emptyRequest({
   method: 'POST',
   path: 'v3/mail/send',
   body: mail.toJSON()
});

Cuplikan pertama berfungsi, sedangkan cuplikan kedua akan memberi Anda kesalahan parse json :(

Kami sudah lama menjadi pelanggan sendgrid, tetapi baru saja mulai bermain-main dengan api dan lib ini. Mungkin detail ini terdokumentasi dengan baik dan saya telah mengabaikannya? Alangkah baiknya jika lib secara otomatis memberi awalan garis miring jika kita menghilangkannya.

Semua 10 komentar

Halo @iamgollum ,

Terima kasih telah meluangkan waktu untuk mengirimkan masalah! Saya telah menambahkan ini ke backlog kami untuk ditinjau.

Sementara itu, mungkin ini akan membantu: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#transactional_templates

Terima kasih!

@bayu_joo

Apakah Anda masih mengalami masalah?

Saya mengalami masalah ini. Dan saya menggunakan template transaksional seperti pada link yang Anda posting.

Hmm, saya pikir masalah ini terkait: https://github.com/sendgrid/sendgrid-nodejs/issues/347

Saya mengklasifikasikan ulang yang ini sebagai bug dan akan memeriksanya bersama.

@adamsing

Sementara itu, apakah Anda memiliki contoh kode yang dapat kami gunakan untuk membantu mereproduksi? Terima kasih!

@thinkingserious Saya akan mencoba dan memberikan contoh kode akhir pekan ini. Saya kembali ke sendgrid sekarang di tempat kerja dan akan mengunjungi kembali semuanya. Saya minta maaf karena jatuh dari muka bumi

Bah! Telah mendapatkan masalah ini selama beberapa jam. Ternyata jalur tersebut peka terhadap garis miring di depan.

var request = sendgrid.emptyRequest({
    method: 'POST',
    path: '/v3/mail/send',
    body: mail.toJSON()
});

vs.

var request = sendgrid.emptyRequest({
   method: 'POST',
   path: 'v3/mail/send',
   body: mail.toJSON()
});

Cuplikan pertama berfungsi, sedangkan cuplikan kedua akan memberi Anda kesalahan parse json :(

Kami sudah lama menjadi pelanggan sendgrid, tetapi baru saja mulai bermain-main dengan api dan lib ini. Mungkin detail ini terdokumentasi dengan baik dan saya telah mengabaikannya? Alangkah baiknya jika lib secara otomatis memberi awalan garis miring jika kita menghilangkannya.

@bayu_joo

Maaf Anda harus berurusan dengan itu :(

Kami sedang mengerjakan penolong yang lebih baik yang menyembunyikan semua detail itu dari Anda. Anda tidak perlu peduli dengan parameter apa pun.

Anda dapat mengikuti proyek ini di sini: https://github.com/sendgrid/sendgrid-nodejs/projects

Terima kasih!

Jangan khawatir. Kami menyukai layanan ini!

Helper baru sedang dalam pengembangan di sini: https://github.com/sendgrid/sendgrid-nodejs/pull/378

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

thinkingserious picture thinkingserious  ·  4Komentar

kiranshashiny picture kiranshashiny  ·  4Komentar

polkhovsky picture polkhovsky  ·  3Komentar

egges picture egges  ·  3Komentar

thidasapankaja picture thidasapankaja  ·  4Komentar