嗯......我有一个非常简单的用例。
我有两个字符串:
var a = 'localhost:3000',
b = '/whatever/; // this can also be whatever/ or /whatever
我需要解析
url.parse(a, b); // so that it takes care of dealing with slashes
但是我得到了
localhost:/whatever/ instead of localhost:3000/whatever/
任何指针?
谢谢!
答案 0 :(得分:2)
如果比较以下两个调用,您会发现在字符串前面添加协议会产生很大的不同:
> url.parse('http://localhost:3000', '/whatever/')
{ protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:3000',
port: '3000',
hostname: 'localhost',
hash: null,
search: '',
query: {},
pathname: '/',
path: '/',
href: 'http://localhost:3000/' }
>
没有
> url.parse('localhost:3000', '/whatever/')
{ protocol: 'localhost:',
slashes: null,
auth: null,
host: '3000',
port: null,
hostname: '3000',
hash: null,
search: '',
query: {},
pathname: null,
path: null,
href: 'localhost:3000' }
>
您可能正在寻找的内容会添加协议,然后使用+
代替,
:
> url.parse('http://localhost:3000' + '/whatever/')
{ protocol: 'http:',
slashes: true,
auth: null,
host: 'localhost:3000',
port: '3000',
hostname: 'localhost',
hash: null,
search: null,
query: null,
pathname: '/whatever/',
path: '/whatever/',
href: 'http://localhost:3000/whatever/' }
>
答案 1 :(得分:0)
选项可以使用以下内容执行normalize path
path.normalize('/foo/bar//baz/asdf'); // the path here
// returns '/foo/bar/baz/asdf'
然后:
var cleanUrl = 'localhost:3000' + path.normalize(yourpath);