NodeJS:undefined不是新功能'new'

时间:2016-04-17 02:02:30

标签: javascript node.js twilio

我正在尝试使用Node JS Twilio指南中的一段代码: https://www.twilio.com/blog/2013/03/introducing-the-twilio-module-for-node-js.html

var twilio = require('twilio')('AUTH-ID','AUTH-SECRET');
    http = require('http');

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);
console.log('Visit http://localhost:1337/ in your browser to see your TwiML document!');

当我启动此代码段并访问该网址时,我收到了以下回复:

/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)

有人能够解释我做错了吗?

3 个答案:

答案 0 :(得分:4)

您需要将require('twilio')导出的内容保存为TwimlResponse所在的位置,而不是保存在您当前正在接收的客户端对象上(require('twilio')(..)与{{1}相同}})。所以这样做:

require('twilio').RestClient(..)

FWIW twilio docs显示了以这种方式使用模块的示例(将导出与实际的Rest客户端分开)。

答案 1 :(得分:1)

从导入中删除参数'AUTH-ID'和'AUTH-SECRET'。

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

答案 2 :(得分:1)

我正在查看该博客,看来如果您正在创建回复,这就是您在代码中应该要求的全部内容:

var twilio = require('twilio');