Node中url.parse(url, true).query:[Object: null prototype]问题入门指南_问题入门基础教程

问题背景在node v13.5.0中通过url模块解析get请求参数的时候,遇到query: [Object: null prototype]var url = require(“url”);
var params = url.parse(“/?name=hello&&age=12”, true);console.log(params);//

Node中url.parse(url, true).query:[Object: null prototype]问题入门指南

问题背景

在node v13.5.0中通过url模块解析get请求参数的时候,遇到query: [Object: null prototype]

Node中url.parse(url, true).query:[Object: null prototype]问题入门指南_问题入门基础教程

var  url  =  require("url");
var  params  =  url.parse("/?name=hello&&age=12", true);

console.log(params);

//  query: [Object: null prototype] { name: 'hello', age: '12' }

如果我们在node中console.log一个null prototype,就会出现[Object: null prototype]

const obj1 = Object.create(null);
obj1['key'] = 'SomeValue' ;
console.log(obj1); 
// [Object: null prototype] { 'key' : 'SomeValue' }

const obj2 = {};
obj2['key'] = 'SomeValue' ;
console.log(obj2); 
// { 'key' : 'SomeValue' } 

而上面会出现这个问题的原因也许跟解析url的库有关,url.parse(req.url, false / true ) ,设置true时URL encoded 使用qs,设置false时 , 使用query-string,参考stackoverflow

解决方法

解决这个问题,可以通过JSON.stringify()和JSON.parse()

var url = require("url");

var params = JSON.stringify(url.parse("/?name=hello&&age=12", true).query);
console.log(JSON.parse(params));

// { name: 'hello', age: '12' }

WHATWG URL API

url 模块用于处理与解析 URL。url 模块提供了两套 API 来处理 URL:一个是旧版本遗留的 API,一个是实现了 WHATWG标准的新 API。

在node 7.0以后,已经支持WHATWG URL API,了解更多

var url = require("url");
var params = new URL("/?name=hello&&age=12", "http://localhost:8888/");

console.log(params);

// 输出结果
URL {
  href: 'http://localhost:8888/?name=hello&&age=12',
  origin: 'http://localhost:8888',
  protocol: 'http:',
  username: '',
  password: '',
  host: 'localhost:8888',
  hostname: 'localhost',
  port: '8888',
  pathname: '/',
  search: '?name=hello&&age=12',
  searchParams: URLSearchParams { 'name' => 'hello', 'age' => '12' },
  hash: ''
}

console.log(params.searchParams.get("name")); // hello
海计划公众号
(0)
上一篇 2020/03/24 05:42
下一篇 2020/03/24 05:42

您可能感兴趣的内容

2020/03/22
  • 浅析 Node 进程与线程小白指南_线程基础知识

    本文首发于政采云前端团队博客:浅析 Node 进程与线程进程与线程是操作系统中两个重要的角色,它们维系着不同程序的执行流程,通过系统内核的调度,完成多任务执行。今天我们从 Node.js(以下简称 Node)的角度来一起学习相关知识,通过本文读者将了解 Node 进程与线程的特点、代码层面的使用以及它们之间的通信。概念首先,我们还是回顾一下相关的定义:进程是

    2020/03/20
  • JS算法题之罗马数字转整数基础知识_算法题基础教程

    题目描述罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。字符 数值
    I 1
    V 5
    X 10
    L 50
    C 100
    D 500
    M 1000例如, 罗马数字

    2020/03/29
  • 把微信小程序异步API为Promise,简化异步编程基础入门_小程序入门知识

    把微信小程序异步API转化为Promise。用Promise处理异步操作有多方便,谁用谁知道。微信官方没有给出Promise API来处理异步操作,而官方API异步的又非常多,这使得多异步编程会层层回调,代码一复杂,回调起来就想砸电脑。于是写了一个通用工具,把微信官方的异步API转化为Promise,方便处理(多)异步操作。你可以这样用:准备转化后的方法并暴

    2020/04/03
  • jQuery UI有四大功能使用帮助_jquery使用指南

    jQuery UI (译:jQuery用户界面) 是:以 jQuery 为基础的开源 JavaScript 网页用户界面代码库。包含底层用户交互、动画、特效和可更换主题的可视控件。我们可以直接用它来构建具有很好交互性的web应用程序。所有插件测试能兼容IE 6.0+, Firefox 3+, Safari 3.1+, Opera 9.6+, 和GoogleC

    2020/03/29
  • 成为优秀码农的十二项自我修养菜鸟教程_码农使用帮助

    业界有着这样一个普遍的误解:要成为一名优秀的程序员,就必须掌握许多种编程语言和工具。实际情况是这样吗?也许下面给出的十二条建议会让您或多或少地改变对此的认同感。1.研究数据结构计算机科学家Niklaus Wirth曾经有过一个著名论断: “数据结构+算法=程序”。 可见,数据结构是计算机程序的基础,它们就像构造房屋的砖头一样。实际上,数据结构决定了程序将如何

    2020/03/24
  • axios取消某个发送的http请求和响应基础入门_请求菜鸟指南

    需求场景用户在点击购买或者其他操作的时候,http响应比较慢在没有收到反馈前,用户点击返回或者跳转到其他页面时,中断当前页面的请求和响应实例化CancelToken首页需要实例化一个CancelTokenimport axios from “axios”;
    const CancelToken = axios.CancelToken;发起请求然后在发起某个请求

    2020/03/24
  • 领贤简历小白教程_专业精美简历模板,满足各种不同行业的求职需求

    领贤简历小白教程 官方网址:http://www.capabcv.com/ 简介描述:专业精美简历模板,满足各种不同行业的求职需求 领贤简历是一个专业的在线简历制作工具,有了好简历…

    2020/03/11
  • 使用Vuex解决Vue中的身份验证小白入门_vuex小白基础

    传统方式中,许多人使用本地存储,来管理通过客户端验证生成的tokens。一个大问题是如何有更好的方式,来管理验证tokens,从而允许我们来存储更大的用户信息。这就是Vuex的作用。 Vuex为Vue.js应用管理状态.。对于应用中所有的组件来说,它被当做中央存储,并用规则确保状态只能以可预见的方式改变。对于经常检查本地存储来说,听起来是个更好的选择?让我们

    2020/04/03
  • node代码如何加密?入门指南_加密菜鸟攻略

    要用nodejs开发接口,实现远程调用,如果裸奔太危险了,就在网上找了一下nodejs的加密,感觉node-rsa挺不错的,下面来总结一下简单的rsa加密解密用法。node代码加密方法如下:1、初始化环境新建一个文件夹node-rsa-demo , 终端进入,运行下面命令初始化cd node-rsa-demo
    npm init # 一路回车即可
    npm in

    2020/03/24
  • lory指南教程_一个支持触摸滑动的 JavaScript 滑块

    lory指南教程 官方网址:http://loryjs.github.io/lory/ GitHub:https://github.com/loryjs/lory 简介描述:一个支…

    2020/03/06
  • jsvu入门指南_一个JavaScript(引擎)版本更新程序

    jsvu入门指南 官方网址:https://mths.be/jsvu GitHub:https://github.com/GoogleChromeLabs/jsvu 简介描述:一个…

    2020/03/08
  • HEAD指南攻略_一份你可以在 <head> 里设置的列表

    HEAD指南攻略 官方网址:https://gethead.info GitHub:https://github.com/joshbuchea/HEAD 简介描述:一份你可以在 &…

    2020/03/06
  • CSS实现雨滴动画效果基础知识入门_效果使用帮助

    玻璃窗今天我们要实现的是雨滴效果,不过实现雨滴前,我们先把毛玻璃的效果弄出来,没有玻璃窗,雨都进屋了,还有啥好敲打的。.window {position: absolute;width: 100vw;height: 100vh;background: url(“https://cn.bing.com//th

    2020/03/24
  • JS实现zip打包文件并下载入门基础教程_下载菜鸟知识

    一、事情的起因之前做了个SVG Sprites还原工具(上传合并好的SVG Sprites文件,分解成独立的小SVG),然后经用户反馈,希望增加个打包下载功能。然后就可以下载了,下面是找到的下载记录。二、如何实现ZIP打包下载使用jszip这个项目实现的: https://github.com/Stuk/jszip压缩和未压缩的JS文件都在 dist目录 下

    2020/03/26