Node.js已废弃url.parse方法的合适替代方案及使用方法
解决方案
替代方案说明
- Node.js v11之后官方正式废弃了旧版
url.parse()方法,目前推荐使用符合WHATWG标准的URL类作为替代,该API为Node.js内置全局可用,无需额外安装依赖。 - 你之前调用
url.parse(addr, true)时传入的第二个参数true是用来将查询字符串自动解析为JS对象,新API可以通过searchParams属性配合Object.fromEntries()实现完全同等的效果。
代码改写示例
你提供的代码片段可以直接修改为如下形式:
const http = require('http'), fs = require('fs'); http.createServer((request, response) => { let addr = request.url, // 因为request.url是相对路径,需要传入一个占位的基础地址即可完成解析,不影响实际路径和参数读取 q = new URL(addr, 'http://localhost'), // 等价于原url.parse第二个参数设为true的效果,得到普通对象格式的查询参数 query = Object.fromEntries(q.searchParams), filePath = '';
新旧API属性对应表
旧url.parse()返回属性 | 新URL实例对应属性/写法 | 说明 |
|---|---|---|
| q.pathname | q.pathname | 完全一致,返回路径部分 |
| q.query | Object.fromEntries(q.searchParams) | 解析为普通对象,也可以直接调用q.searchParams.get(key)单独取值 |
| q.path | q.pathname + q.search | 路径+查询字符串整体 |
| q.search | q.search | 完全一致,返回带?前缀的查询字符串 |
| q.hash | q.hash | 完全一致,返回带#前缀的哈希部分 |
内容的提问来源于stack exchange,提问作者Jop
相关产品推荐
相关产品推荐

