我试图在Node.js中更改(或添加)给定URL字符串中的端口值。
https://localhost:8080/index.html?query=value => https://localhost:9090/index.html?query=value
or
https://localhost/index.html?query=value => https://localhost:9090/index.html?query=value
仍然需要支持Node 6,我试图像这样使用the legacy URL API:
> var parsed = url.parse('https://localhost:8080/index.html?query=value');
undefined
> parsed.port = '9090'
'9090'
> url.format(parsed)
'https://localhost:8080/index.html?query=value'
这似乎是由于url.format
执行以下操作:
否则,如果urlObject.host属性值为truthy,则为值 将urlObject.host强制转换为字符串并附加到结果。
这促使我做了以下事情:
> var parsed = url.parse('https://localhost:8080/index.html?query=value');
undefined
> delete parsed.host
true
> parsed.port = '9090'
'9090'
> url.format(parsed)
'https://localhost:9090/index.html?query=value'
我做了我想要的,但感觉非常hacky,我不确定这样做可能产生的副作用。
是否有一种更简单,更惯用的方式来更改URL字符串中的端口而无需使用Regexes等?