我收到一个错误,我相信这是从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”。另外,控制台日志中也没有“发送给受训者”。此外,在所有源代码中的任何地方均未引用“ .values”。
在控制台日志中,我看到正在传递JSON:
{ to: '*****',
from: '*****',
template_id: '******',
dynamicTemplateData: { name: 'Rocky McChocolate', menteeName: 'MenteeNameHere' } }
我将其放在在线JSON验证器中,它无效。但是,我相信这是因为它在日志中的显示方式,而不是JSON的实际外观。由于这是可行的,所以我更改的只是模板ID。 好吧,我想我已经在上面描述了这一点(也许在错误的地方)。 客户端有一个Firebase应用程序,它会发送电子邮件。他们想要另一封电子邮件。因此,我创建了电子邮件(在Twilio / Sendgrid中),并更改了template_id值并期望发送新电子邮件。相反,我收到此错误消息。我已经与客户确认,在我处理电子邮件之前已经发送了电子邮件。
答案 0 :(得分:0)
该错误"TypeError: Object.values is not a function"
来自您的代码,而不是来自SendGrid。在某个地方,某些东西以无效的方式调用.values
,但是它不在您在此处显示的代码中。
您是正确的,那是无效的JSON。您是否需要在值上调用toJSON
或类似值,以将其转换为JSON字符串?