Después de enviar un correo electrónico con plantilla utilizando la utilidad de ayuda de correo electrónico de SendGrid. La respuesta del servidor de la API de SendGrid devuelve JSON no válido de acuerdo con este contenedor (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)
La línea 110 es:
//Use callback
self.client.API(request, function(response) {
response.body = response.body ? JSON.parse(response.body) : response.body;
Ejemplo:
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;
})();
Incluso puede crear una prueba de moca, ejecuté esto desde este entorno de prueba:
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);
});
});
});
La función sendEmail contiene la configuración normal de POST V3 para llamar a la API como se describe en los documentos.
Hola @iamgollum ,
Gracias por tomarse el tiempo para enviar un problema. He agregado esto a nuestra lista de trabajos pendientes para su revisión.
Mientras tanto, tal vez esto ayude: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#transactional_templates
¡Gracias!
@iamgollum ,
¿Sigues teniendo algún problema?
Tengo este problema. Y estoy usando una plantilla transaccional como en el enlace que publicaste.
Hmm, creo que este problema está relacionado: https://github.com/sendgrid/sendgrid-nodejs/issues/347
Estoy reclasificando este como un error y los comprobaré juntos.
@adamsingle ,
Mientras tanto, ¿tienes una muestra de código que podamos usar para ayudar a reproducir? ¡Gracias!
@thinkingserious Intentaré proporcionar una muestra de código este fin de semana. Vuelvo a sendgrid ahora en el trabajo y voy a revisar todo. Me disculpo por caerme de la faz de la tierra
¡Bah! He tenido este problema exacto durante unas horas. Resulta que la ruta es sensible a la barra inclinada.
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()
});
El primer fragmento funciona, mientras que el segundo le dará el error de análisis json :(
Hemos sido clientes de sendgrid durante mucho tiempo, pero recién comenzamos a jugar con la API y esta biblioteca. ¿Quizás este detalle está bien documentado y lo he pasado por alto? Sería bueno que la biblioteca prefijara automáticamente la barra si la omitimos.
@bradseefeld ,
Lamento que hayas tenido que lidiar con eso :(
Estamos trabajando en un mejor ayudante que le oculte todos esos detalles. No debería tener que preocuparse por ninguno de los parámetros.
Puedes seguir el proyecto aquí: https://github.com/sendgrid/sendgrid-nodejs/projects
¡Gracias!
No te preocupes. ¡Nos encanta el servicio!
El nuevo ayudante está en desarrollo aquí: https://github.com/sendgrid/sendgrid-nodejs/pull/378
Comentario más útil
¡Bah! He tenido este problema exacto durante unas horas. Resulta que la ruta es sensible a la barra inclinada.
vs
El primer fragmento funciona, mientras que el segundo le dará el error de análisis json :(
Hemos sido clientes de sendgrid durante mucho tiempo, pero recién comenzamos a jugar con la API y esta biblioteca. ¿Quizás este detalle está bien documentado y lo he pasado por alto? Sería bueno que la biblioteca prefijara automáticamente la barra si la omitimos.