Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught TypeError: URL is not a constructor in javascript

Tags:

javascript

my code

let url = new URL('http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5');
let searchParams = new URLSearchParams(url.search);
console.log(searchParams.get('c'));  // outputs "m2-m3-m4-m5"

and the error

Uncaught TypeError: URL is not a constructor

like image 210
fuzzy buddy Avatar asked Sep 14 '26 00:09

fuzzy buddy


1 Answers

The only thing that would cause this error in any recent version of Chrome (at least since 2014's v32) would be if you had some other code that overwrote the URL symbol.

For example

const URL = 'I am now a string'

// later...

let url = new URL('http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5');

If you're having trouble locating the code that's overwriting URL, you could start by simply adding

console.log(URL)

to your code. The value logged may give you a hint. Otherwise, see this post ~ How to know in which file that defined a js global var in chrome console?


Solutions:

  • Try not to use global object names in your variables.
  • Don't assign global variables if you can help it.

On that last note, you could avoid this problem like this

(function() {
  const URL = 'I am a string but not window.URL'

  // later...

  let url = new window.URL('http://www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5');
  console.info(url.search)
})()
like image 93
Phil Avatar answered Sep 15 '26 14:09

Phil



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!