Javascript NodeJS:未定义不是新函数“new”

Javascript NodeJS:未定义不是新函数“new”,javascript,node.js,twilio,Javascript,Node.js,Twilio,我正在尝试Node JS Twilio指南中的一段代码: 当我启动此代码段并访问URL时,我得到以下响应: /Users/unicornherder/Desktop/Porter/inbound.js:7 var resp = new twilio.TwimlResponse(); ^ TypeError: undefined is not a function at Server.<anonymous> (/Users/unicorn

我正在尝试Node JS Twilio指南中的一段代码:

当我启动此代码段并访问URL时,我得到以下响应:

/Users/unicornherder/Desktop/Porter/inbound.js:7
    var resp = new twilio.TwimlResponse();
               ^
TypeError: undefined is not a function
    at Server.<anonymous> (/Users/unicornherder/Desktop/Porter/inbound.js:7:16)
    at Server.EventEmitter.emit (events.js:98:17)
    at HTTPParser.parser.onIncoming (http.js:2108:12)
    at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
    at Socket.socket.ondata (http.js:1966:22)
    at TCP.onread (net.js:527:27)

有人能解释一下我做错了什么吗?

从导入中删除参数“AUTH-ID”和“AUTH-SECRET”


如果在导入过程中传递这些参数,则表示您正在初始化rest客户端,而twilio变量将不会表示模块对象。因此,TwimlResponse对象将是未定义的。

从导入中删除参数“AUTH-ID”和“AUTH-SECRET”

如果在导入过程中传递这些参数,则表示您正在初始化rest客户端,而twilio变量将不会表示模块对象。因此,TwimlResponse对象将是未定义的。

您需要保存require'twilio正在导出的内容,因为TwimlResponse所在的位置,而不是您当前接收的require'twilio'客户端对象上的内容。。与要求'twilio'相同。RestClient。。。因此,请改为:

var http = require('http');

var twilio = require('twilio');
// or `var twilioClient = twilio(...)`
var twilioClient = new twilio.RestClient('AUTH-ID','AUTH-SECRET');

http.createServer(function (req, res) {
  var resp = new twilio.TwimlResponse();
  resp.say({voice:'woman'}, 'ahoy hoy! Testing Twilio and node.js');
  res.writeHead(200, {
    'Content-Type':'text/xml'
  });
  res.end(resp.toString());
}).listen(1337);
FWIW显示了以这种方式使用模块将导出与实际Rest客户端分离的示例。

您需要保存require'twilio正在导出的内容,因为TwimlResponse所在的位置,而不是您当前接收的require'twilio'客户端对象上。。与要求'twilio'相同。RestClient。。。因此,请改为:

var http = require('http');

var twilio = require('twilio');
// or `var twilioClient = twilio(...)`
var twilioClient = new twilio.RestClient('AUTH-ID','AUTH-SECRET');

http.createServer(function (req, res) {
  var resp = new twilio.TwimlResponse();
  resp.say({voice:'woman'}, 'ahoy hoy! Testing Twilio and node.js');
  res.writeHead(200, {
    'Content-Type':'text/xml'
  });
  res.end(resp.toString());
}).listen(1337);

FWIW展示了以这种方式使用模块将导出与实际Rest客户端分离的示例。

我正在该博客中查找,似乎如果您正在创建响应,那么您的代码中应该只需要以下内容:

var twilio = require('twilio');

我在那篇博客中看到,如果您正在创建响应,那么代码中应该要求的就是:

var twilio = require('twilio');

感谢您的详细回答和解释出口流程。非常感谢!嘿@mscdex,非常感谢您在StackOverflow上的帮助。我很乐意送你一件衬衫来表示感谢!如果你觉得这很酷,请发电子邮件mspeir@twilio.com详细信息。感谢您的详细回答和解释导出过程。非常感谢!嘿@mscdex,非常感谢您在StackOverflow上的帮助。我很乐意送你一件衬衫来表示感谢!如果你觉得这很酷,请发电子邮件mspeir@twilio.com有关详细信息,谢谢您的快速回复。取下身份验证id和身份验证密码就成功了。感谢您的快速响应。取下身份验证id和身份验证密码就成功了。