help? 为何node.js程序中每次访问,则number是加二?
发布于 2个月前 作者 jiangwest 288 次浏览 来自 问答

每次网页 127.0.0.1:3000 被访问,number值+2,而不是+1? for example: number 显示 2,4,6,…

node程序如下


  /**
   * New node file
   */
  var http=require('http');
  var localTime=new Date();
  var number =0;
  
  http.createServer(function(req,res){
      res.writeHead(200,{'Content-Type':'text/html'});
      res.write('<h1>Node.js</h1>');
      res.end('<p>Hello World, you are the ' +  number + ' vistior! </p>');
      
      req.on('end',function(){
          number++;
          console.log("this webpage is accessed!");
          console.log(localTime.toLocaleString());
      });   
      
  }).listen(3000);

有何问题?

11 回复

@captainblue2013 你们在抢沙发么?

console.log(req.url);
number++;前面加上上面那句话就知道为什么了…

抢得都太快, 完全没跟上。

thanks! 是favicon.ico请求所导致

  • / 表示用户输入的客户端请求的目标URL地址,"/"代表用户的目标url地址为web应用程序的根目录.
  • /favicon.ico表示为浏览器为页面在收藏夹中的显示图标.默认为favicon.ico.而自动发出的请求的目标URL地址. 我改为
  /**
   * New node file
   */
  var http=require('http');
  var localTime=new Date();
  var number =0;
  
  http.createServer(function(req,res){
      res.writeHead(200,{'Content-Type':'text/html'});
      res.write('<h1>Node.js</h1>');
      res.end('<p>Hello World, you are the ' +  number + ' vistior! </p>');
      
      req.on('end',function(){
          console.log(req.url);
          if(req.url !== '/favicon.ico'){
              //todo
              number++;
              console.log("this webpage is accessed!");
              console.log(localTime.toLocaleString());
              
          }     
      });   
      
  }).listen(3000);

@captainblue2013 好不容易看到一个以我的智商和才华能答上来的帖子!你们能不能让我!

这样写的话会对所有请求+1,favicon也会请求一次哦

哈哈 每个初学的都会碰到的坑

这个帖子 回答的都是大神,除了我

回到顶部