我正在尝试使用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)
有人能够解释我做错了吗?
答案 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');