Краткий ответ:
Если второй параметр 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 }