2011-11-27 7 views
10

Ho una configurazione di base di node.js, ma penso che mi manchi qualcosa.La pagina node.js aggiorna le risorse di chiamata due volte?

mio main.js:

var a = require('./another.js'); 

var http = require('http'); 
http.createServer(function (request, response) { 
    response.writeHead(200, 
    { 
     'Content-Type': 'text/html' 
    }); 

    response.write(a.saysomething('Hi there!') + '<br />'); 
    response.end(); 
}).listen(27182); 

console.log('Server running at http://127.0.0.1:27182/'); 

mio another.js:

exports.saysomething = function (str) { 
    console.log('in saysomething!'); 
    return str + ' hey there!'; 
} 

Il problema è che la mia console è l'output in saysomething! due volte. Mi sto perdendo qualcosa? Quando aggiorno la pagina, mi aspetto solo uno in saysomething!.

+0

La tua pagina contiene qualcosa di diverso dal testo? Qualsiasi immagine o qualcosa con un attributo SRC in là? – JohnP

+0

No. Quello che ho pubblicato è legittimamente tutto ciò che ho. La mia uscita è 'Ciao! Ehilà!
' – JesseBuesking

+0

Controlla i tuoi plug-in di Chrome: avevo un plug-in dello sniffer che stava facendo una seconda richiesta http, ogni richiesta! –

risposta

30

Probabilmente il tuo browser sta cercando di ottenere favicon.ico in aggiunta all'URL che stai colpendo. Prova a eseguire semplicemente il comando sulla riga di comando: curl http://127.0.0.1:27182/

Inoltre, è possibile aggiungere la registrazione per request.url. Questo ti mostrerà quali URL sono richiesti.

+0

Richiede davvero l'intera pagina solo per la favicon? – JesseBuesking

+3

Richiede nuovamente /favicon.ico. Il tuo codice nodo risponderà a qualsiasi URL incluso/OHMYGODTHISISAURLTOO :) –

+0

C'è un modo per ignorare una route in node.js? So che puoi farlo in asp.net mvc. – JesseBuesking

0

Ecco un altro modo per capire il problema. Questo server dei nodi terrà traccia di tutte le richieste e mostrandole sul browser in JSON. Quindi puoi colpire F5 e guardare le richieste che stai facendo.

var http = require("http"); 

    var messages = []; 

    http.createServer(function(request, response) { 
     console.log("We got a hit @ " + new Date());   
     messages.push(request.url); 
     messages.push(request.headers); 

      response.writeHead(200, {"Content-Type": "text/plain"}); 
     for (var i = 0; i < messages.length; ++i) { 
      response.write("\n\n" + JSON.stringify(messages[i])); 
     } 
      response.end(); 
    }).listen(8888); 

PS: Vedere anche questo duplicato per ulteriori informazioni nodejs - http.createServer seems to call twice

Problemi correlati