我是编程新手,正在学习node.js,但是在执行parsedUrl时,我得到的输出是[object:null],如何修复它

时间:2019-05-06 15:44:20

标签: node.js programming-languages

我运行下面的程序,对不起我的语法,我的母语不是英语,所以如果我不是描述性的,请原谅我,请提问。 我的输出是 E:\ Love>节点punit.js 服务器正在侦听端口5000 在路径:fof上收到的请求与方法:get和这些查询字符串参数一起使用[对象:空原型] {fizz:'buzz'} 我的代码在下面

/*
 * Primary file for API
 *
 */

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

 // Configure the server to respond to all requests with a string
var server = http.createServer(function(req,res){

  // Parse the url
 var parsedUrl = url.parse(req.url, true);

  // Get the path
  var path = parsedUrl.pathname;
  var trimmedPath = path.replace(/^\/+|\/+$/g, '');

  // Get the query string as an object
  var queryStringObject = parsedUrl.query;

  // Get the HTTP method
  var method = req.method.toLowerCase();

  // Send the response
  res.end('Hello World!\n');

  // Log the request/response
  console.log('Request received on path: '+trimmedPath+' with method: '+method+' and this query string: ',queryStringObject);
});

// Start the server
server.listen(3000,function(){
  console.log('The server is up and running now');
});

实际输出 E:\ Love>节点punit.js 服务器正在侦听端口5000 在路径:fof上收到的请求带有方法:get和这些查询字符串参数{fizz:'buzz'}

我的代码图片在下面

1 个答案:

答案 0 :(得分:1)

简短答案:

如果此处的第二个参数是trueurl.parse(req.url, true),您将无法摆脱[Object: null prototype](看起来像是内置功能中节点的一部分,可能是提醒)

这是因为您要将parseQueryString的{​​{1}}参数设置为url.parse。从文档中:

  

如果为true,则查询属性将始终设置为true模块的querystring方法返回的对象。

来自parse()文档

  

querystring.parse()方法返回的对象原型上不会从JavaScript对象继承。这意味着未定义典型的Object方法,例如obj.toString(),obj.hasOwnProperty()和其他方法。

因此在querystring.parse上总是以console.log开头,例如[Object: null prototype]

我假设它在那里(作为节点功能的一部分),提醒query: [Object: null prototype] { q: 'ok' }对象的prototypequery

例如,在以下情况中可以观察到相同的行为:

null