Javascript 为什么node.js脚本会被调用两次?
我是Node.js的初学者 我在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('
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
谢谢!我要试试看!谢谢我要试试看!谢谢!这对以后的调试很有帮助,谢谢!这对以后的调试是有帮助的