加载jQuery时出错:“未捕获的TypeError:无法读取属性'export'的null”

时间:2014-08-07 18:03:24

标签: javascript jquery

我正在开发一个需要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 

Screenshot

错误指向文件中的第二行代码:

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

1 个答案:

答案 0 :(得分:3)

这可以说是jQuery中的一个错误,你应该为它提交一个bug。

由于历史原因,javascript中的typeof null会产生object,因此他们的检查会抛出您在module为空的情况下看到的确切异常。

如果您检查该网站上的window.module的值,您会看到它为空,因此它正在触及我所指的情况。

您甚至可以提出拉取请求(在提交错误之后!)因为修复只是为了将支票更改为

typeof module === "object" && module && typeof module.exports === "object"