未捕获的TypeError:URL不是JavaScript中的构造函数

时间:2019-02-06 04:00:45

标签: javascript

我的代码

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"

和错误

  

未捕获的TypeError:URL不是构造函数

2 个答案:

答案 0 :(得分:2)

任何最新版本的Chrome(至少从2014年的v32起)会导致此错误的唯一原因是,您是否有其他代码覆盖了URL符号。 / p>

例如

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');

如果您在查找覆盖URL的代码时遇到麻烦,可以先添加

console.log(URL)

您的代码。记录的值可能会给您提示。否则,请看这篇文章〜How to know in which file that defined a js global var in chrome console?


解决方案:

  • 尽量不要在变量中使用全局对象名称。
  • 如果可以的话,不要分配全局变量。

最后一点,您可以避免这样的问题

(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)
})()

答案 1 :(得分:0)

发生此问题是因为url.URLundefined(在此comment中了解更多)。