未捕获的ReferenceError:未定义require,我使用的是dojo1.7.2

时间:2013-05-09 20:39:33

标签: dojo require

我正在使用dojo1.7.2我遇到了firebug错误:未捕获的ReferenceError:require未定义

这是我的代码:

<script type="text/javascript" src="../js/release/dojo/dojo.js" 
 data-dojo-config="packages:[ {'name':'com','location':'/myApp/js/com'}], async: false, parseOnLoad: true, isDebug: true">
</script>
<script language="JavaScript" type="text/javascript">
    require(['dojo/dojo', "dijit/dijit", "dojox/dojox"], function () {
    require(["dojox/mobile", "dojo/parser"], function(mobile, parser){
        })
    });
</script>

我在哪里错了?提前谢谢。

4 个答案:

答案 0 :(得分:1)

从你指定的src加载dojo可能是一个错误,因为我不知道文件夹结构,我无法分辨。

<script language="JavaScript" type="text/javascript">
    require(["dojox/mobile", "dojo/parser"], function(mobile, parser){
        alert("hi");
    });
</script>

这是一个工作http://jsfiddle.net/P4bvs/1/

的小提琴

这个外部要求(require(['dojo / dojo',“dijit / dijit”,“dojox / dojox”])不是必需的,但不是导致错误的原因。

答案 1 :(得分:1)

我刚刚解决了这个问题。我的解决方案很可能无法帮助,因为这个问题可能是由许多不同的事情引起的。我的网站是由 server1.blah.com 提供的,而dojo是通过 server2.blah.com 提供的。通常该网站工作正常。然后我们得到了一个新用户,该网站根本没有运行良好。我在Web控制台中收到错误:

ReferenceError: require is not defined

问题是两台服务器都使用https,但没有证书。 (这是一个内部网应用程序)。因此,当您转到 server1.blah.com 时,它会询问您是否要继续并添加例外。但! server2 也不例外!所以我让我的新用户导航到server2.blah.com/blah/dojo.js并在那里添加例外。现在一切正常! (想想看。在这种情况下,require来自dojo。如果由于许多可能的原因无法加载dojo,则不会定义require函数。

此外,我并不是以任何方式提倡这是一种最佳做法。只需设置证书即可!

答案 2 :(得分:0)

最初,您需要检查它所在的dojo.js文件。 你需要关注的最终事情是你的dojo文件夹位于何处以及src标签所给出的位置&#34;&#34;

答案 3 :(得分:0)

我们在工作中遇到了同样的问题,只是为了让其他人知道您是否遇到了错误

Uncaught ReferenceError:require is not defined                at dojo.js:29
dojo.js:29

,并且您正在使用 single-spa 或导入固定版本的 SystemJS ,就像这样  <script src="https://cdnjs.cloudflare.com/ajax/libs/systemjs/0.21.5/system-production.js"></script>  这可能是原因。 因此,在我们的案例中,拥有生产版本会在开发中抛出此异常,这在{mountParcel} with single-spa中是有用的。

您可以从index.html指定非生产就绪的systemjs,或者使用更好的方法在html中不要注入systemjs。