Я новичок в программировании, я изучаю node.js, но при выполнении parsedUrl я получаю [object: null] с выводом, как это исправить - PullRequest
1 голос
/ 06 мая 2019

Я выполняю следующую программу, извините за грамматику, мой родной язык не английский, поэтому, если я не описательный, простите меня и задайте вопрос, пожалуйста.мой вывод E: \ Love> узел punit.js Сервер сейчас прослушивает порт 5000 Запрос получен по пути: fof с методом: get и с этими параметрами строки запроса [Object: null prototype] {fizz: 'buzz'} MyКод ниже

/*
 * 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> node punit.js Теперь сервер прослушивает порт 5000 Запрос получен по пути: fof с методом: get и с этими параметрами строки запроса{fizz: 'buzz'}

Мой код изображения ниже

1 Ответ

1 голос
/ 08 мая 2019

Краткий ответ:

Если второй параметр true здесь url.parse(req.url, true), вы не можете избавиться от [Object: null prototype] (похоже, это часть встроенных функций узлов, вероятно, в качестве напоминания)

Это потому, что вы устанавливаете parseQueryString параметр url.parse в true. Из документов:

Если true, свойство запроса всегда будет установлено на объект, возвращаемый методом parse() модуля querystring.

Из querystring.parse документов

Объект, возвращаемый методом querystring.parse () , не наследуется прототипом от объекта JavaScript . Это означает, что типичные методы Object, такие как obj.toString (), obj.hasOwnProperty () и другие, не определены и не будут работать.

Так что console.log всегда предшествует [Object: null prototype], например query: [Object: null prototype] { q: 'ok' }

Я бы предположил, что это есть (как часть функциональности узлов), чтобы напомнить, что prototype из query объекта - null.

Например, такое же поведение можно наблюдать в следующих случаях:

const a = { b: 1 }
a.__proto__ = null; // <-- set prototype of a to null
console.log(a)
// outputs [Object: null prototype] { b: 1 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...