Этот блок кода будет разлагать URL
var fields = url.match( /(.*)[:/]{3}([^:/]+)[:]?([^/]*)([^?]*)[?]?(.*)/ );
if(fields === null){
throw new Error('bar url');
}
var protocol = fields[1];
var host = fields[2];
var port = fields[3];
var path = fields[4];
var query = fields[5];
Так что, если вы попадаете в if, это означает, что url является неверно составленным URL
Надеюсь, это поможет