Object不是SendGrid的函数

时间:2014-08-25 23:46:57

标签: node.js azure-mobile-services sendgrid

我尝试使用带有Azure移动服务的SendGrid发送电子邮件。我在这里使用示例代码作为参考:

http://azure.microsoft.com/en-us/documentation/articles/store-sendgrid-nodejs-how-to-send-email/

exports.post = function(request, response) {

    var SendGrid = require('sendgrid');


    var toEmail = 'myemail@mydomain.com';

    var mail = new SendGrid.Email({
        to: toEmail,
        from: toEmail,
        subject: 'Hello SendGrid',
        text: 'This is a sample email message.'
    });

    var sender = new SendGrid('my_user','my_ key');


};

我收到了一个创建发件人的TypeError。 Email对象按预期创建。我不确定我做错了什么。从查看sendgrid.js中的代码,导出看起来是正确的。有什么想法吗?

这是错误:

脚本错误' /api/my_api.js'。 TypeError:object不是函数

注意: 我已经使用npm

添加了sendgrid

来自sendgrid.js

var Sendgrid = function(api_user, api_key, options) {
}

module.exports = Sendgrid;

4 个答案:

答案 0 :(得分:1)

根据github文档:

var sendGrid = require('sendgrid')('my_user', 'my_key');

var mail = new sendGrid.Email({
  to: toEmail,
  from: toEmail,
  subject: 'Hello SendGrid',
  text: 'This is a sample email message.'
});

https://github.com/sendgrid/sendgrid-nodejs

答案 1 :(得分:0)

sendgrid.Email是通过实例化模块返回的对象的方法。要访问sendgrid.Email,您必须通过要求SendGrid来调用返回的函数。

您的代码应如下所示:

exports.post = function(request, response) {

  var sendgrid = require('sendgrid');
  var sender = new sendgrid('my_user','my_ key');
  var toEmail = 'myemail@mydomain.com';
  var mail = new sender.Email({
    to: toEmail,
    from: toEmail,
    subject: 'Hello SendGrid',
    text: 'This is a sample email message.'
  });
};

编辑:更正的方法名称。

答案 2 :(得分:0)

未正确导入SendGrid包。我被抛弃了错误,因为正确创建了Email对象。

我重新检查了我的package.json并用npm install更新了项目。一切都开始了。

答案 3 :(得分:0)

上面的一些答案对我有所帮助,但我仍然需要弄清楚这一点。

这是我使用sendgrid修复对象时不是函数错误。这显然是特定于版本的,因此您可能需要根据您使用的sendgrid版本调整版本号。

在azure移动服务项目的package.json文件中添加sendgrid作为依赖项。

“依赖项”:{     “sendgrid”:“^ 1.9.2”   },   “devDependencies”:{     “sendgrid”:“^ 1.9.2”   },

https://github.com/sendgrid/sendgrid-nodejs的指示清楚地说明了这一点,但不知怎的,我忽略了它。