2016-04-17 3 views
1

Я пытаюсь фрагмент кода из руководства Node JS Twilio: https://www.twilio.com/blog/2013/03/introducing-the-twilio-module-for-node-js.htmlNodeJS: неопределенный не новая функция «новая»

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!'); 

Когда я запускаю этот фрагмент и посетить 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) 

Может кто-то любезно объяснить, что я делаю неправильно?

ответ

4

Вы должны сохранить то, что require('twilio') экспортирует как то, где TwimlResponse жизни, а не на объекте клиента, что вы в настоящее время получает (require('twilio')(..) такое же, как require('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 twilio docs показаны примеры использования модуля таким образом (разделяющей экспорт от фактического клиента Rest).

+0

Благодарим вас за подробный ответ и объяснение процесса экспорта. Очень признателен! – unicornherder

+0

Эй, @mscdex, очень ценю вашу помощь здесь, на StackOverflow. Хотелось бы отправить вам рубашку, чтобы сказать спасибо! Если это звучит круто для вас, напишите по электронной почте [email protected] для получения более подробной информации. –

1

Удалите из импорта параметры «AUTH-ID» и «AUTH-SECRET».

Если вы передадите эти параметры во время импорта, вы инициализируете клиента-клиента, а переменная twilio не будет представлять объект модуля. Следовательно, объект TwimlResponse не будет определен.

+0

Спасибо за быстрый ответ. Снятие auth-id и auth-secret сделали трюк. – unicornherder

1

Я ищу в этом блоге, и кажется, что если вы создаете ответ, это все, что вы должны требовать в вашем коде:

var twilio = require('twilio'); 
Смежные вопросы