有人可以从我的控制台中的哪个位置解释未定义的值?

时间:2018-03-26 14:22:36

标签: node.js

如果我在我的控制台中转到localhost:8080 /?referal = referalID我得到了referall id以及一行未定义的值,我该如何删除那个未定义的行?

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;

    res.end(console.log(qdata.referal));
}).listen(8080);

我的问题是我需要在这里改变什么?

4 个答案:

答案 0 :(得分:1)

我不确定你在那里做什么,但这应该是正确的语法:

var http = require('http');
var url = require('url');

http.createServer(function(req,res) {
  var adr;
  var q;
  var qdata;

  req.on('data', function() {
    // Data handler
  }).on('end', function() {
    res.writeHead(200, {'Content-Type':'text/html'});
    adr = req.url;
    q = url.parse(adr, true);
    qdata = q.query;
    console.log(qdata);

    res.end(qdata.referal);
  });
}).listen(8080);

答案 1 :(得分:1)

您无法在回复中发送console.log来电。

你应该将两者分开:

console.log(qdata.referal); // This will print in the console, server side
res.end(qdata.referal) // This will be echoed back to the client, in the browser

答案 2 :(得分:0)

您可能正在讨论的未定义行是返回给客户端的那个,这是因为控制台日志不会返回任何内容 正如您在源代码here

中看到的那样

覆盖控制台日志记录以返回参数

function example(value) {
  if (value === /^[0-9]{1,2}$/gi.test(value) || /^[a-z]{1,2}$/gi.test(value) ) {
    // do stuff...
  } else {
    // do other stuff...
  }
}

example('AA');   // returns 'true'
example('99');   // returns 'false', expected 'true'
example('Word'); // returns 'false'

虽然这可能会节省几个操作码并将另一个对象推入堆栈,但您应该谨慎使用它,或者记住一个可以帮助您解决与未来相关的错误的祈祷。

下次请附上日志或截图

#过编程

答案 3 :(得分:0)

您看到undefined的原因是因为您的浏览器也在寻找favicon.ico,因此您的功能会被点击两次。如果你这样做:

var http = require('http');
var url = require('url');

http.createServer(function(req,res){
    res.writeHead(200, {'Content-Type':'text/html'});
    var adr = req.url;
    console.log(adr);
    var q = url.parse(adr, true);
    var qdata = q.query;
    res.end(qdata.referal);
}).listen(8080);

你会得到:

  

/?转诊= referalID
  /favicon.ico

url.parse('/favicon.ico', true);的结果是undefined

另外提及res.end(console.log(qdata.referal));的其他人不会向浏览器/客户端返回任何内容,因为console.log()不会返回任何内容。