2011-11-27 22 views
10

Tôi có một thiết lập node.js cơ bản, nhưng tôi nghĩ rằng tôi đang thiếu một cái gì đó.tài nguyên gọi lại làm mới trang node.js hai lần?

My 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/'); 

another.js của tôi:

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

Vấn đề là giao diện điều khiển của tôi là xuất ra in saysomething! hai lần. Tui bỏ lỡ điều gì vậy? Khi tôi làm mới trang, tôi chỉ mong đợi một in saysomething!.

+0

Liệu trang của bạn chứa bất cứ điều gì khác ngoài văn bản? Bất kỳ hình ảnh hoặc bất cứ điều gì với một thuộc tính SRC trong đó? – JohnP

+0

No. Những gì tôi đăng là hợp pháp tất cả những gì tôi có. Đầu ra của tôi là 'Chào bạn! này!
' – JesseBuesking

+0

Kiểm tra các plugin Chrome của bạn - Tôi đã có một plugin bổ trợ đã đưa ra yêu cầu http thứ 2, mọi yêu cầu! –

Trả lời

30

Trình duyệt của bạn có thể đang cố gắng tải favicon.ico ngoài url bạn đang truy cập. Hãy thử thực hiện lệnh trên dòng lệnh: curl http://127.0.0.1:27182/

Ngoài ra, bạn có thể thêm ghi nhật ký cho request.url. Điều đó sẽ cho bạn biết url nào đang được yêu cầu.

+0

Liệu nó có thực sự yêu cầu lại toàn bộ trang chỉ dành cho favicon không? – JesseBuesking

+3

Nó yêu cầu lại /favicon.ico. Mã nút của bạn sẽ trả lời bất kỳ url nào bao gồm/OHMYGODTHISISAURLTOO :) –

+0

Có cách nào để bỏ qua một tuyến đường trong node.js không? Tôi biết bạn có thể làm điều đó trong asp.net MVC. – JesseBuesking

0

Đây là một cách khác để hiểu sự cố. Máy chủ nút này sẽ theo dõi tất cả các yêu cầu và hiển thị chúng cho bạn trên trình duyệt bằng JSON. Sau đó, bạn có thể nhấn F5 và xem các yêu cầu bạn đang thực hiện.

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: Xem thêm này lặp lại để biết thêm nodejs - http.createServer seems to call twice

Các vấn đề liên quan