Node.js 对象不是具有SendGrid的函数

Node.js 对象不是具有SendGrid的函数,node.js,azure-mobile-services,sendgrid,Node.js,Azure Mobile Services,Sendgrid,我正在尝试使用带有Azure移动服务的SendGrid发送电子邮件。我在这里使用示例代码作为参考: 我在创建发件人时遇到一个类型错误。电子邮件对象按预期创建。我不确定我做错了什么。通过查看sendgrid.js中的代码,导出看起来是正确的。有什么想法吗 以下是错误: 脚本“/api/my_api.js”中出现错误。TypeError:对象不是函数 注: 我已经使用npm添加了sendgrid 来自sendgrid.js var Sendgrid = function(api_user, api

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

我在创建发件人时遇到一个类型错误。电子邮件对象按预期创建。我不确定我做错了什么。通过查看sendgrid.js中的代码,导出看起来是正确的。有什么想法吗

以下是错误:

脚本“/api/my_api.js”中出现错误。TypeError:对象不是函数

注: 我已经使用npm添加了sendgrid

来自sendgrid.js

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

module.exports = Sendgrid;
根据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.'
});

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.'
  });
};

编辑:更正了方法名称。

未正确导入SendGrid包。我被抛出错误,因为电子邮件对象被正确创建


我重新检查了我的package.json,并用npm安装更新了项目。一切都开始起作用了。

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

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

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

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


上的说明清楚地说明了这一点,但不知何故,我忽略了它。

闻起来像是一个requires config错误。检查浏览器开发控制台,查看是否加载了文件从github请求失败,并显示相同的消息。TypeError:对象不是函数。我以前试过这个,我测试过这里的东西,效果很好。你有最新的版本吗?1.2版。今天通过npm安装。
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.'
  });
};