Sendgrid-nodejs: Nicht erfasster Syntaxfehler: Unerwartetes Token <(in lib / sendgrid.js ausgelöst für ein Antwortobjekt)

Erstellt am 16. Nov. 2016  ·  10Kommentare  ·  Quelle: sendgrid/sendgrid-nodejs

Problemzusammenfassung

Nach dem Versenden einer Vorlagen-E-Mail mit dem E-Mail-Hilfsprogramm von SendGrid. Die Serverantwort von der SendGrid-API gibt ungültigen JSON gemäß diesem Wrapper (sendgrid-nodejs) zurück.

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)

Zeile 110 lautet:

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

Schritte zum Reproduzieren

  1. Stellen Sie sicher, dass das sendgrid-Knotenpaket -> "sendgrid": "^ 4.7.1",
  2. Erstellen Sie eine Vorlage mit Ersetzungen in SendGrid und aktivieren Sie diese Vorlage
  3. Erstellen Sie mit dem E-Mail-Helfer eine vollständige E-Mail für die Vorlage. am Ende .toJSON anwenden.

Beispiel:

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

Sie können sogar einen Mokka-Test erstellen. Dies habe ich in dieser Testumgebung ausgeführt:

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

Die sendEmail-Funktion enthält das normale POST V3-Setup zum Aufrufen der in den Dokumenten beschriebenen APIas.

Technische Details:

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

Hilfreichster Kommentar

Bah! Ich habe genau dieses Problem seit ein paar Stunden. Es stellt sich heraus, dass der Pfad empfindlich auf den führenden Schrägstrich reagiert.

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

Das erste Snippet funktioniert, während das zweite den json-Analysefehler anzeigt :(

Wir waren lange Zeit ein Sendgrid-Kunde, haben aber gerade angefangen, mit der API und dieser Bibliothek zu spielen. Vielleicht ist dieses Detail gut dokumentiert und ich habe es übersehen? Es wäre schön, wenn die Bibliothek dem Schrägstrich automatisch ein Präfix voranstellen würde, wenn wir ihn weglassen.

Alle 10 Kommentare

Hallo @iamgollum ,

Vielen Dank, dass Sie sich die Zeit genommen haben, eine Ausgabe einzureichen! Ich habe dies zur Überprüfung zu unserem Rückstand hinzugefügt.

In der Zwischenzeit hilft dies möglicherweise: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#transactional_templates

Vielen Dank!

@iamgollum ,

Haben Sie noch ein Problem?

Ich habe dieses Problem. Und ich verwende eine Transaktionsvorlage wie in dem von Ihnen geposteten Link.

Hmm, ich denke, dieses Problem hängt zusammen: https://github.com/sendgrid/sendgrid-nodejs/issues/347

Ich klassifiziere diesen als Fehler und werde sie gemeinsam überprüfen.

@adamsingle ,

Haben Sie in der Zwischenzeit ein Codebeispiel, mit dem wir die Reproduktion unterstützen können? Vielen Dank!

@thinkingserious Ich werde versuchen, dieses Wochenende ein Codebeispiel bereitzustellen. Ich komme jetzt bei der Arbeit zu sendgrid zurück und werde alles noch einmal besuchen. Ich entschuldige mich dafür, dass ich vom Erdboden gefallen bin

Bah! Ich habe genau dieses Problem seit ein paar Stunden. Es stellt sich heraus, dass der Pfad empfindlich auf den führenden Schrägstrich reagiert.

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

Das erste Snippet funktioniert, während das zweite den json-Analysefehler anzeigt :(

Wir waren lange Zeit ein Sendgrid-Kunde, haben aber gerade angefangen, mit der API und dieser Bibliothek zu spielen. Vielleicht ist dieses Detail gut dokumentiert und ich habe es übersehen? Es wäre schön, wenn die Bibliothek dem Schrägstrich automatisch ein Präfix voranstellen würde, wenn wir ihn weglassen.

@bradseefeld ,

Entschuldigung, dass Sie sich damit befassen mussten :(

Wir arbeiten an einem besseren Helfer, der all diese Details vor Ihnen verbirgt. Sie sollten sich nicht um einen der Parameter kümmern müssen.

Sie können das Projekt hier verfolgen: https://github.com/sendgrid/sendgrid-nodejs/projects

Vielen Dank!

Keine Sorge. Wir lieben den Service!

Der neue Helfer befindet sich hier in der Entwicklung: https://github.com/sendgrid/sendgrid-nodejs/pull/378

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

egges picture egges  ·  3Kommentare

Chrischuck picture Chrischuck  ·  3Kommentare

agostonbonomi picture agostonbonomi  ·  3Kommentare

amlcodes picture amlcodes  ·  4Kommentare

thinkingserious picture thinkingserious  ·  4Kommentare