2014-06-05 20 views
5

Ho letto post su tutto questo e so che deve essere qualcosa di sciocco, ma non riesco a capire perché il seguente codice viene lanciato "TypeError: ascoltatore deve essere una funzione "Node.js https.createServer genera TypeError: listener deve essere una funzione

Assumere opzioni

var server = https.createServer(options, function(request,response){ 
if (request.url==='/') request.url='/home/altronic/Opti-Cal/web/arimonitor.htm'; 
console.log("Request: " + request.url); 
fs.readFile("public"+request.url,function(error,data){ 
    if (error) { 
     response.writeHead(404, {"Content-type":"text/plain"}); 
     response.end ("Sorry the page you requested was not found."); 
    } else { 
     response.writeHead(200,{"Content-type":mime.lookup('public'+request.url)}); 
     response.end (data); 

      } 
}) 
}).listen(port); 

uscita della console:

events.js:130 
throw TypeError('listener must be a function'); 
    ^
TypeError: listener must be a function 
at TypeError (<anonymous>) 
at Server.EventEmitter.addListener (events.js:130:11) 
at new Server (http.js:1816:10) 
at Object.exports.createServer (http.js:1846:10) 
at Object.<anonymous> (/home/altronic/Opti-Cal/src/Opti-Cal_HTTPS_Server.js:42:20) 
at Module._compile (module.js:456:26) 
at Object.Module._extensions..js (module.js:474:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Function.Module.runMain (module.js:497:10) 

qualcuno mi può aiutare capisci?

risposta

17

Dove si assegna https? Sembra che tu stia probabilmente richiedendo http, non https. http.createServer non accetta opzioni come https.createServer.

+0

+1 Penso che sia esattamente ciò che sta accadendo. Produrrebbe esattamente lo stesso errore. –

+1

La traccia dello stack mostra un frame in 'http.js', quindi sembra abbastanza probabile. –

+0

Grazie. Questo è esattamente il problema! – user3712539

0

ho avuto lo stesso messaggio di errore:

throw TypeError('listener must be a function');

Ho due file server.js e handler.js separati. Il mio problema era mentre stavo richiedendo (require(./handler.js)) il mio file gestore in server.js non lo stavo esportando dal file handler.js. È necessario disporre di: module.exports =handler; nella parte inferiore del file del gestore

Problemi correlati