2016-03-21 5 views
0

Я новичок в node.js и изучаю учебники онлайн. я пробуя следующий фрагмент кода:nodejs - почему моя функция async выполняется дважды?

var http = require("http"); 

// create a server 
http.createServer(function(req, res) { 
    console.log("Received Request"); 
    res.writeHead(200, {'Content-Type':'application/json'}); 
    res.end("{'status':'200', 'message':'Hello World'}"); 
    console.log("Response Sent"); 
}).listen(process.env.PORT, process.env.IP); 

я сделал получить правильный ответ, но в консоли выход был:

Received Request 
Response Sent 
Received Request 
Response Sent 

Я хотел бы знать, почему мой код работает дважды ?? Я ошибаюсь? Пожалуйста, помогите !!

+6

Приходилось ли Вам обновить страницу или посетить его дважды? – David

+0

нет, я просто ударил URL-адрес один раз из адресной строки браузера !! –

+3

Это почти наверняка связано с тем, что браузер делает второй запрос для ресурса favicon. Попробуйте 'console.log (« Received Request », req.url);' – apsillers

ответ

2

Когда вы получаете доступ к URL-адресу, используя браузер, браузер отправит запрос на значок, а затем отправит другой запрос на контент, поэтому вы видите два запроса!

Используйте PostMan и запросите тот же адрес, вы должны указать только один запрос.

2

Никакой ошибки - это нормально! Ваш браузер выполняет несколько запросов. Аналогичный ответ есть и у nodejs - http.createServer seems to call twice.

Надеюсь, вам весело учиться node.js!

3

лучший способ отладки, чтобы проверить URL-адрес

var http = require("http"); 

// create a server 
http.createServer(function(req, res) { 
    console.log(req.url);//add this line, I hope it will help 
    console.log("Received Request"); 
    res.writeHead(200, {'Content-Type':'application/json'}); 
    res.end("{'status':'200', 'message':'Hello World'}"); 
    console.log("Response Sent"); 
}).listen(process.env.PORT, process.env.IP); 

Кроме того, как Bassam Rubaye отметил, что может, скорее всего, из-за фавиконки в вашем случае

+0

+ для ответов, которые научат вас самому диагностировать проблему. – jfriend00

Смежные вопросы