Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么node.js脚本会被调用两次?_Javascript_Node.js - Fatal编程技术网

Javascript 为什么node.js脚本会被调用两次?

Javascript 为什么node.js脚本会被调用两次?,javascript,node.js,Javascript,Node.js,我是Node.js的初学者 我在Node.js中编写第一个脚本,如下所示: var count = 0; var http = require('http'); var serv = http.createServer(function (req, res) { count++; console.log("why two?:" + count); res.writeHead(200,{'Content-Type': 'text/html'}); require('

我是Node.js的初学者 我在Node.js中编写第一个脚本,如下所示:

var count = 0;
var http = require('http');
var serv = http.createServer(function (req, res) {
    count++;
    console.log("why two?:" + count);
    res.writeHead(200,{'Content-Type': 'text/html'});
    require('colors');
    if (count % 2 == 0) {
        console.log('count:' + count);
        console.log('smashing node'.rainbow);
        res.end('<marquee>Smashing Node</marquee>');
    } else {
        console.log('count:' + count);
        console.log('WTF'.rainbow);
        res.end('<h4>Smashing Node</h4>');
    }
});
serv.listen(3000);
为什么代码被调用两次?
谢谢,因为有两个请求

可能其中一个用于
/
,另一个用于
/favicon.ico

您的代码在处理请求时不关心路径是什么


您可以通过查看浏览器开发人员工具的“网络”选项卡或检查
req
对象的内容来测试这一点。

,因为正在发出两个请求

可能其中一个用于
/
,另一个用于
/favicon.ico

您的代码在处理请求时不关心路径是什么


您可以通过查看浏览器开发工具的“网络”选项卡或检查
req
对象的内容来测试这一点。

无论何时请求,都会调用匿名函数

因此,也许你会请求两次(例如for/and/favicon.ico) 尝试打开chrome开发工具,在控制台选项卡中,您可能会看到一个错误,即未找到favicon.ico

或者,您可以使用来跟踪请求:

var app = require('express')();
var morgan = require('morgan');
app.use(morgan('dev'));

它将用代码和URL-s记录每个请求。但它需要快速执行。

无论何时请求,都会调用匿名函数

var count = 0;
var http = require('http');
var serv = http.createServer(); 
serv.on('request',function(req,res){
    count++;
    console.log("why two?:" + count);
    res.writeHead(200,{'Content-Type': 'text/html'});

    if (req.url=='/') {
        console.log(req.method);
        console.log(req.headers);
        console.log(req.url);
        res.end('<marquee>Smashing Node</marquee>');
    } 
});
serv.listen(3000);
因此,也许你会请求两次(例如for/and/favicon.ico) 尝试打开chrome开发工具,在控制台选项卡中,您可能会看到一个错误,即未找到favicon.ico

或者,您可以使用来跟踪请求:

var app = require('express')();
var morgan = require('morgan');
app.use(morgan('dev'));
它将用代码和URL-s记录每个请求。但它需要快速计算。

var count=0;
var count = 0;
var http = require('http');
var serv = http.createServer(); 
serv.on('request',function(req,res){
    count++;
    console.log("why two?:" + count);
    res.writeHead(200,{'Content-Type': 'text/html'});

    if (req.url=='/') {
        console.log(req.method);
        console.log(req.headers);
        console.log(req.url);
        res.end('<marquee>Smashing Node</marquee>');
    } 
});
serv.listen(3000);
var http=require('http'); var serv=http.createServer(); 服务开启('request',函数(req,res){ 计数++; log(“为什么是两个?:”+count); res.writeHead(200,{'Content-Type':'text/html'}); 如果(请求url=='/')){ 控制台日志(请求方法); 控制台日志(请求头); 控制台日志(请求url); res.end(“粉碎节点”); } }); 服务听(3000);
在这种情况下,它只检查
'/'
url,然后做出响应……因此字幕返回
var count=0;
var http=require('http');
var serv=http.createServer();
服务开启('request',函数(req,res){
计数++;
log(“为什么是两个?:”+count);
res.writeHead(200,{'Content-Type':'text/html'});
如果(请求url=='/')){
控制台日志(请求方法);
控制台日志(请求头);
控制台日志(请求url);
res.end(“粉碎节点”);
} 
});
服务听(3000);

在这种情况下,它只检查
“/”
url,然后做出响应……因此返回了字幕

您确定没有发送两个请求吗?检查您的devtools控制台当我使用Safari访问url时,代码只调用一次。但在Chrome中,它被称为两次。我在devtools中检查网络,url一次发送一次你确定你没有发送两个请求吗?检查您的devtools控制台当我使用Safari访问url时,代码只调用一次。但在Chrome中,它被称为两次。我在devtools中检查了网络,url在我刚刚测试代码并确认后发送,第二个请求是针对
/favicon.ico
我刚刚测试了代码并确认,第二个请求是针对
/favicon.ico
谢谢!我要试试看!谢谢我要试试看!谢谢!这对以后的调试很有帮助,谢谢!这对以后的调试是有帮助的