我正在使用带有Node.Js的Azure移动服务,我需要使用SendGrid发送电子邮件,但我收到了
TypeError:对象#在exports.post没有方法'send'
错误消息。
这是我的代码:
exports.post = function(request, response) {
var user = '<user>';
var key = '<key>';
var sendgrid = require('sendgrid');
sendgrid.api_user = user;
sendgrid.api_key = key;
var email = new sendgrid.Email({
to: 'my_email@mail.com',
from: 'test@sendgrid.com',
subject: 'This is the subject.',
text: 'This is the body.'
});
sendgrid.send(email, function (err, json) {
if (err) { return console.error(err); }
console.log(json);
});
request.respond(200);}
为什么Azure SendGrid失败?与Node.Js一起安装的版本不正确?如何使用npm(节点包管理器)访问Node.Js以重新安装SendGrid包?或者出了什么问题? (SendGrid已经有“发送”方法,您可以通过GitHub进行检查。)
非常感谢任何帮助! 桑德
答案 0 :(得分:1)
这是解决方案。 对sendgrid的引用不是对象。我必须创建一个SendGrid对象,它有一个“发送”方法。
正确的代码是:
exports.post = function(request, response) {
var user = '<user>';
var key = '<key>';
var sendgridReference = require('sendgrid');
var sendgridObject = new sendgridReference.SendGrid();
sendgridObject.api_user = user;
sendgridObject.api_key = key;
var email = new sendgridReference.Email({
to: 'my_email@mail.com',
from: 'test@sendgrid.com',
subject: 'This is the subject.',
text: 'This is the body.'
});
sendgridObject.send(email, function (err, json) {
if (err) { return console.error(err); }
console.log(json);
});
request.respond(200);
};