Sendgrid-nodejs: НСпСрСхвачСнная синтаксичСская ошибка: Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ <(Π² lib / sendgrid.js, ΡΡ€Π°Π±ΠΎΡ‚Π°Π²ΡˆΠΈΠΉ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‚Π²Π΅Ρ‚Π°)

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 16 нояб. 2016  Β·  10ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: sendgrid/sendgrid-nodejs

РСзюмС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹

ПослС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ шаблонного элСктронного письма с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ SendGrid. ΠžΡ‚Π²Π΅Ρ‚ сСрвСра ΠΎΡ‚ API SendGrid Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ нСдопустимый JSON Π² соотвСтствии с этой ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΎΠΉ (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)

Π‘Ρ‚Ρ€ΠΎΠΊΠ° 110:

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

ДСйствия ΠΏΠΎ Π²ΠΎΡΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΡŽ

  1. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚ ΡƒΠ·Π»Π° sendgrid -> "sendgrid": "^ 4.7.1",
  2. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ шаблон с Π·Π°ΠΌΠ΅Π½Π°ΠΌΠΈ Π² SendGrid ΠΈ Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΡƒΠΉΡ‚Π΅ этот шаблон
  3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ письмо для шаблона с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠ° ΠΏΠΎ элСктронной ΠΏΠΎΡ‡Ρ‚Π΅. ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅ .toJSON Π² ΠΊΠΎΠ½Ρ†Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€:

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;
})();

Π’Ρ‹ Π΄Π°ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ тСст ΠΌΠΎΠΊΠΊΠΎ, я запускал Π΅Π³ΠΎ ΠΈΠ· этой тСстовой срСды:

    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);
            });
        });
    });

Ѐункция sendEmail содСрТит ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ настройку POST V3 для Π²Ρ‹Π·ΠΎΠ²Π° API, ΠΊΠ°ΠΊ описано Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ….

ВСхничСскиС подробности:

  • sendgrid-nodejs ВСрсия: 4.7.1
  • Node.js ВСрсия: 4.6.1

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π‘Π°! ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ» эту Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, ΠΏΡƒΡ‚ΡŒ чувствитСлСн ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΡΠ»Π΅ΡˆΡƒ.

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

ΠΏΡ€ΠΎΡ‚ΠΈΠ²

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

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ€Π°Π·Π±ΠΎΡ€Π° json :(

ΠœΡ‹ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π±Ρ‹Π»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ sendgrid, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с api ΠΈ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, эта Π΄Π΅Ρ‚Π°Π»ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°, ΠΈ я Π΅Π΅ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»? Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Ссли Π±Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° автоматичСски прСфикс косой Ρ‡Π΅Ρ€Ρ‚Ρ‹, Ссли ΠΌΡ‹ Π΅Π΅ опустим.

ВсС 10 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

ΠŸΡ€ΠΈΠ²Π΅Ρ‚ @iamgollum ,

Бпасибо, Ρ‡Ρ‚ΠΎ нашли врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅! Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» это Π² наш ΠΆΡƒΡ€Π½Π°Π» для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, это ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#transactional_templates

Бпасибо!

@iamgollum ,

Π£ вас всС Π΅Ρ‰Π΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°?

Π£ мСня такая ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°. И я ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽ шаблон Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΈ, ΠΊΠ°ΠΊ Π² ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π°ΠΌΠΈ ссылкС.

Π₯ΠΌ, я Π΄ΡƒΠΌΠ°ΡŽ, эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° связана: https://github.com/sendgrid/sendgrid-nodejs/issues/347

Π― Ρ€Π΅ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽ это ΠΊΠ°ΠΊ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŽ ΠΈΡ… вмСстС.

@adamsingle ,

ΠœΠ΅ΠΆΠ΄Ρƒ Ρ‚Π΅ΠΌ, Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΊΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для воспроизвСдСния? Бпасибо!

@thinkingserious Π― ΠΏΠΎΡΡ‚Π°Ρ€Π°ΡŽΡΡŒ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Π΅Ρ† ΠΊΠΎΠ΄Π° Π² эти Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅. Π― Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡΡŒ ΠΊ sendgrid сСйчас Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡΡŒ всС ΠΏΠ΅Ρ€Π΅ΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ. ΠŸΡ€ΠΎΡˆΡƒ прощСния Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΏΠ°Π» с Π»ΠΈΡ†Π° Π·Π΅ΠΌΠ»ΠΈ

Π‘Π°! ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ» эту Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… часов. ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, ΠΏΡƒΡ‚ΡŒ чувствитСлСн ΠΊ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΌΡƒ ΡΠ»Π΅ΡˆΡƒ.

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

ΠΏΡ€ΠΎΡ‚ΠΈΠ²

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

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ выдаст ΠΎΡˆΠΈΠ±ΠΊΡƒ Ρ€Π°Π·Π±ΠΎΡ€Π° json :(

ΠœΡ‹ Π΄ΠΎΠ»Π³ΠΎΠ΅ врСмя Π±Ρ‹Π»ΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ sendgrid, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π°Ρ‡Π°Π»ΠΈ ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ с api ΠΈ этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, эта Π΄Π΅Ρ‚Π°Π»ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°, ΠΈ я Π΅Π΅ Π½Π΅ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ»? Π‘Ρ‹Π»ΠΎ Π±Ρ‹ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΎ, Ссли Π±Ρ‹ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° автоматичСски прСфикс косой Ρ‡Π΅Ρ€Ρ‚Ρ‹, Ссли ΠΌΡ‹ Π΅Π΅ опустим.

@bradseefeld ,

Π˜Π·Π²ΠΈΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Π°ΠΌ ΠΏΡ€ΠΈΡˆΠ»ΠΎΡΡŒ с этим ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒΡΡ :(

ΠœΡ‹ Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π½Π°Π΄ Π»ΡƒΡ‡ΡˆΠΈΠΌ ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ скроСт ΠΎΡ‚ вас всС эти Π΄Π΅Ρ‚Π°Π»ΠΈ. Π’Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°Π±ΠΎΡ‚ΠΈΡ‚ΡŒΡΡ Π½ΠΈ ΠΎ ΠΊΠ°ΠΊΠΈΡ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ….

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ здСсь: https://github.com/sendgrid/sendgrid-nodejs/projects

Бпасибо!

Π‘Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Нам ΠΎΡ‡Π΅Π½ΡŒ нравится сСрвис!

Новый ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ находится Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ здСсь: https://github.com/sendgrid/sendgrid-nodejs/pull/378

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

murphman300 picture murphman300  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

thinkingserious picture thinkingserious  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

wooyah picture wooyah  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

amlcodes picture amlcodes  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

thinkingserious picture thinkingserious  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ