我正在使用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>
我在哪里错了?提前谢谢。
答案 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。