Depois de enviar um modelo de e-mail usando o utilitário auxiliar de e-mail do SendGrid. A resposta do servidor da API do SendGrid está retornando JSON inválido de acordo com este wrapper (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)
Linha 110 é:
//Use callback
self.client.API(request, function(response) {
response.body = response.body ? JSON.parse(response.body) : response.body;
Exemplo:
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;
})();
Você pode até criar um teste mocha, eu executei neste ambiente de teste:
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);
});
});
});
A função sendEmail contém a configuração normal do POST V3 para chamar a API conforme descrito nos documentos.
Olá @iamgollum ,
Obrigado por enviar um problema! Eu adicionei isso ao nosso backlog para revisão.
Enquanto isso, talvez isso ajude: https://github.com/sendgrid/sendgrid-nodejs/blob/master/USE_CASES.md#transactional_templates
Obrigado!
@iamgollum ,
Você ainda está tendo problemas?
Estou tendo esse problema. E estou usando um modelo transacional como no link que você postou.
Hmm, estou pensando que esse problema está relacionado: https://github.com/sendgrid/sendgrid-nodejs/issues/347
Estou reclassificando este como um bug e verificarei juntos.
@adamsingle ,
Enquanto isso, você tem um exemplo de código que possamos usar para ajudar na reprodução? Obrigado!
@thinkingserious , tentarei fornecer um exemplo de código neste fim de semana. Estou voltando para sendgrid agora no trabalho e vou revisitar tudo. Peço desculpas por cair da face da terra
Bah! Estou tendo exatamente esse problema há algumas horas. Acontece que o caminho é sensível à barra inicial.
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()
});
O primeiro snippet funciona, enquanto o segundo fornecerá o erro de análise json :(
Somos clientes do sendgrid há muito tempo, mas acabamos de começar a brincar com a API e esta lib. Talvez este detalhe esteja bem documentado e eu o tenha esquecido? Seria bom que a lib prefixasse automaticamente a barra se a omitirmos.
@bradseefeld ,
Desculpe, você teve que lidar com isso :(
Estamos trabalhando em um ajudante melhor que esconde todos esses detalhes de você. Você não deve se preocupar com nenhum dos parâmetros.
Você pode acompanhar o projeto aqui: https://github.com/sendgrid/sendgrid-nodejs/projects
Obrigado!
Não se preocupe. Adoramos o serviço!
O novo auxiliar está em desenvolvimento aqui: https://github.com/sendgrid/sendgrid-nodejs/pull/378
Comentários muito úteis
Bah! Estou tendo exatamente esse problema há algumas horas. Acontece que o caminho é sensível à barra inicial.
vs
O primeiro snippet funciona, enquanto o segundo fornecerá o erro de análise json :(
Somos clientes do sendgrid há muito tempo, mas acabamos de começar a brincar com a API e esta lib. Talvez este detalhe esteja bem documentado e eu o tenha esquecido? Seria bom que a lib prefixasse automaticamente a barra se a omitirmos.