我正在开发一个需要jQuery并且在网站上遇到问题的书签。
当我尝试在toysrus.com上加载jQuery时,使用以下代码:
var element = document.createElement("script");
element.onload=function() {
jQuery.noConflict();
}
element.src = "//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.js";
document.body.appendChild(element);
此错误显示在控制台中:
Uncaught TypeError: Cannot read property 'exports' of null
错误指向文件中的第二行代码:
if ( typeof module === "object" && typeof module.exports === "object" ) {
根据我的理解,只要调用noConflict()
,我就可以多次加载jQuery,我正在这样做,而这个错误似乎只发生在这个问题上一个网站。
为什么会发生错误,我该怎么做才能解决?
更新:
从浏览器中发生错误的行运行代码会导致同样的错误:
typeof module === "object" && typeof module.exports === "object"
输出:
TypeError: Cannot read property 'exports' of null
我很困惑为什么会抛出错误,因为如果module.exports
不存在,控制台是否应该输出undefined
?
答案 0 :(得分:3)
这可以说是jQuery中的一个错误,你应该为它提交一个bug。
由于历史原因,javascript中的typeof null
会产生object
,因此他们的检查会抛出您在module
为空的情况下看到的确切异常。
如果您检查该网站上的window.module
的值,您会看到它为空,因此它正在触及我所指的情况。
您甚至可以提出拉取请求(在提交错误之后!)因为修复只是为了将支票更改为
typeof module === "object" && module && typeof module.exports === "object"