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;
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.
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
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.
vs.
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.