小编典典

我可以使用 require("path").join 安全地连接网址吗?

all

这是否可以安全地用于require("path").join连接 URL,例如:

require("path").join("http://example.com", "ok"); 
//returns 'http://example.com/ok'

require("path").join("http://example.com/", "ok"); 
//returns 'http://example.com/ok'

如果不是,你会建议如何在不编写充满 if 的代码的情况下这样做?


阅读 204

收藏
2022-08-19

共1个答案

小编典典

No.path.join()与 URL 一起使用时会返回不正确的值。

这听起来像你想要new URL()的。来自WHATWG URL 标准

new URL('/one', 'http://example.com/').href    // 'http://example.com/one'
new URL('/two', 'http://example.com/one').href // 'http://example.com/two'

请注意,url.resolve现在在Node
文档
中标记为已弃用。

正如 Andreas
在评论中正确指出的那样,url.resolve(也已弃用)只有在问题与示例一样简单时才会有所帮助。
url.parse也适用于这个问题,因为它通过URL对象返回一致且可预测的格式化字段,从而减少了对“充满 ifs 的代码”的需求。但是,new URL()也是url.parse.

2022-08-19