Node.js HTTP服务控制台出现undefined值,求原因及代码修改方案
移除Node.js控制台中的undefined输出
我来帮你搞定这个问题!你看到的额外undefined输出,根源出在代码里把console.log()的返回值传给了res.end()——因为console.log()本身执行后没有返回值(也就是返回undefined),这就导致控制台在打印出referal ID的同时,多了一行undefined。
问题代码分析
你代码里的这一行是关键问题:
res.end(console.log(qdata.referal));
当这行代码执行时,会先调用console.log(qdata.referal)打印出referal ID,但这个函数的返回值是undefined,随后你把这个undefined当作参数传给了res.end(),这不仅会让服务器的响应内容变成undefined,还会触发控制台输出这行多余的undefined。
修改方案
把打印操作和响应结束操作拆分开来,不要把console.log()的结果传给res.end():
修改后的完整代码:
var http = require('http'); var url = require('url'); http.createServer(function(req,res){ res.writeHead(200, {'Content-Type':'text/html'}); var adr = req.url; var q = url.parse(adr, true); var qdata = q.query; // 单独打印referal ID到控制台 console.log(qdata.referal); // 结束响应,若不需要给浏览器返回内容,传空字符串或直接调用res.end() res.end(''); }).listen(8080);
如果想给浏览器页面返回referal ID,可以把res.end('')改成:
res.end(qdata.referal);
这样浏览器页面会显示referal ID,同时服务器控制台只会打印一次referal ID,再也不会出现多余的undefined了。
内容的提问来源于stack exchange,提问作者Tomas Jucevičius
相关产品推荐
相关产品推荐

