未捕获的类型错误:URL 不是 javascript 中的构造函数
2019-02-06
14284
我的代码
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"
和错误
Uncaught TypeError: URL is not a constructor
2个回答
在 Chrome 的
任何
较新版本(至少自 2014 年的 v32 以来)中,唯一会导致此错误的情况是,如果您有其他代码覆盖了
URL
符号。
例如
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)
。记录的值可能会给您提示。否则,请参阅此帖子〜 如何知道在 chrome 控制台中哪个文件中定义了 js 全局变量?
解决方案:
- 尽量不要在变量中使用全局对象名称。
- 如果可以的话,不要分配全局变量。
最后,您可以像这样避免此问题
(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)
})()
Phil
2019-02-06
出现该问题的原因是
url.URL
未定义
(更多信息请阅读此
评论
)。
Vladimir Denisov
2020-08-12