require('url').parse('someurl.com/page')
已被仅文档弃用,而我们严格的linter对此感到不满意...我试图用互联网建议的new URL('someurl.com/page')
替换掉它,在大多数情况下都可以使用
但是,我们有一些示例,其中url是本地图像some/image-png
,并且可以与url.parse()很好地配合并返回:
Url {
protocol: null,
slashes: null,
auth: null,
host: null,
port: null,
hostname: null,
hash: null,
search: null,
query: null,
pathname: '/some/image.png',
path: '/some/image.png',
href: '/some/image.png'
}
但是建议的替换new URL('some/image-png')
会引发类型错误...
TypeError [ERR_INVALID_URL] [ERR_INVALID_URL]:无效的网址: /some/image.png
url.parse正在做一些验证并接受本地路径,但是新的url构造函数却没有。该怎么办?
答案 0 :(得分:12)
const server = http.createServer((req, res) => {
const baseURL = 'http://' + req.headers.host + '/';
const reqUrl = new URL(req.url,baseURL);
console.log(reqUrl);
});
会给 reqUrl :
URL {
href: 'http://127.0.0.1:3000/favicon.ico',
origin: 'http://127.0.0.1:3000',
protocol: 'http:',
username: '',
password: '',
host: '127.0.0.1:3000',
hostname: '127.0.0.1',
port: '3000',
pathname: '/favicon.ico',
search: '',
searchParams: URLSearchParams {},
hash: ''
}
答案 1 :(得分:4)
const path = require("path");
const url = require("url");
const p = path.join("public", "images", "a.jpg");
console.log(p); // public\images\a.jpg
console.log(new url.URL(p, "http://xxx").pathname); // /public/images/a.jpg
答案 2 :(得分:3)
您可以使用URL构造函数的基本参数。例如:
new URL('some/image-png', "https://dummyurl.com")
有关更多信息,请https://nodejs.org/api/url.html#url_constructor_new_url_input_base。