Я получаю сообщение об ошибке при попытке использовать sendgrid для отправки электронной почты - PullRequest
0 голосов
/ 21 июня 2019

Я получаю сообщение об ошибке, которое, как мне кажется, возвращается из sendgrid.Однако я не могу найти эту ошибку в документации по устранению неполадок Twilio / Sendgrid.Я видел некоторые ссылки на это, которые указывают, что это проблема с несоответствием версии.Вот вещь, я очень мало знаю об этом проекте.Разработчик оставил некоторое время назад.Я пытался помочь, и довольно успешно.Однако, это меня поставило в тупик.Ошибка не относится к какому-либо номеру строки или модулю (который я могу сказать)

Это из журнала консоли Firebase для облачной функции, которая пытается отправить это письмо:

{ 
 insertId: "000000-55176214-acd2-453d-8258-048000f1e9e3"   
   labels: {…}   
 logName: "projects/wsos-base/logs/cloudfunctions.googleapis.com%2Fcloud-functions"   
 receiveTimestamp: "2019-06-21T16:40:19.541487656Z"   
   resource: {…}   
 severity: "ERROR"   
 textPayload: "TypeError: Object.values is not a function"   
 timestamp: "2019-06-21T16:40:13.253Z"   
 trace: "projects/wsos-base/traces/bdb710bad4f92297c239de4409de2323"   
}

Сообщения журнала консоли ПЕРЕД вызовом sendgrid.send отображаются в журнале.Ни одно из сообщений журнала ПОСЛЕ этого вызова не отображается.Я закомментировал весь вызов, и в файле журнала не отображается никаких ошибок.Я почти на 100% уверен, что это происходит во время разговора.НО, при поиске в sendgrid я должен ожидать, по крайней мере, номер ошибки в ответе. Я подтвердил, что «catch» работает, подставив строковое сообщение об ошибке.Я вижу это сообщение об ошибке в журнале.Когда я возвращаю его к исходному улову, я получаю сообщение «TypeError ... Object.values…».Нет сообщения об ошибке.Нет номера строки.Нет модуля.

return admin.auth().getUser(user)
                      .then(mentorObj => {
                        var mentorEmail = mentorObj.email;
                        var menteeObj = doc2.data();
                        console.log("Sending to Mentor: ", mentorEmail);
                        const confirmationMentor = {
                              to: mentorEmail,
                              from: *******,
                              template_id: ********,    
                              dynamicTemplateData: {
                                name: mentor.firstName,
                             menteeName: "MenteeNameHere"
                          },
                        };
                        console.log("Sent to Mentor: ", confirmationMentor);

                        return sendgrid.send(confirmationMentor)
                          .then(() => {
                            // console.log('Confirmation successfully sent to ' + mentorEmail);
                            console.log("sending to mentee");
...
})
                         .catch(error => console.error(error.toString()));

Простая замена вышеупомянутого error.toString () на SomeText заменяет сообщение TypeError в консоли на SomeText.Кроме того, «отправка mentee» НЕ в журналах консоли.Кроме того, ".values" нигде не упоминается во всем исходном коде.

В журналах консоли я вижу, что передается JSON:

{ to: '*****',
  from: '*****',
  template_id: '******',
  dynamicTemplateData: { name: 'Rocky McChocolate', menteeName: 'MenteeNameHere' } }

Я поместил это в онлайн-валидатор JSON, и он недействителен.Однако я считаю, что это связано с тем, как оно отображается в журнале, а не с тем, как на самом деле выглядит JSON.Так как это работало, и все, что я изменил, был идентификатор шаблона.ну, я думаю, что я описал это выше (возможно, не в том месте).У клиента есть приложение Firebase, и оно рассылает электронные письма.Они хотели другой адрес электронной почты.Итак, я создал электронное письмо (в Twilio / Sendgrid), изменил значение template_id и ожидал отправки нового электронного письма.Вместо этого я получаю это сообщение об ошибке.Я подтвердил клиенту, что электронные письма отправлялись до того, как я начал над ним работать.

1 Ответ

0 голосов
/ 24 июня 2019

Эта ошибка, "TypeError: Object.values is not a function" исходит из вашего кода, а не из SendGrid.Где-то что-то вызывает .values недопустимым образом, но это не в коде, который вы здесь показали.

Вы правы, что это недопустимый JSON.Вам нужно вызывать toJSON или аналогичный по значениям, чтобы преобразовать его в строку JSON?

...