node 升级URL parse变化

这几天在做Electron的版本升级,项目中的node版本也进行了升级,发现项目中的一个功能出现了问题,代码如下:

let url = "app://test?on=1"
let uri = new URL(url)
console.log(uri)
console.log(process.version)

proces输出主要是为了输出node的版本:

URL {
  href: 'app://test?on=1',
  origin: 'null',
  protocol: 'app:',
  username: '',
  password: '',
  host: 'test',
  hostname: 'test',
  port: '',
  pathname: '',
  search: '?on=1',
  searchParams: URLSearchParams { 'on' => '1' },
  hash: ''
}
v20.18.0
URL {origin: "null", protocol: "test:", username: "", password: "", host: "", …}
hash: ""
host: ""
hostname: ""
href: "test://app?on=1"
origin: "null"
password: ""
pathname: "//app"
port: ""
protocol: "test:"
search: "?on=1"
searchParams: URLSearchParams {}
username: ""
__proto__: URL
v14.16.0

node在针对url的解析在不同版本遵循的标准发生了变化,pathname和host解析不一样 导致之前的代码出现了问题,升级后需要兼容