RequireJS 文档说,要支持旧版本的IE,您需要进行配置enforceDefine: true.
因此,如果您想支持Internet Explorer,捕获加载错误,并通过直接的define()调用或shim配置获得模块化代码,请始终将enforceDefine设置为true.有关示例,请参阅下一节.
注意:如果你设置enforceDefine:true,并且使用data-main =""来加载主JS模块,那么主JS模块必须调用define()而不是require()来加载它需要的代码.主JS模块仍然可以调用require/requirejs来设置配置值,但是对于加载模块,它应该使用define().
由于Twitter Bootstrap不是AMD模块,我需要使用它来使其工作.这是我配置它的方式;
<script type="text/javascript">
var require = {
paths: {
"bootstrap": "../bootstrap",
"jquery": "../jquery-1.8.2"
},
shim: {
"bootstrap": ["jquery"]
},
enforceDefine: true
};
</script>
Run Code Online (Sandbox Code Playgroud)
后来当我的模块想要bootstrap作为依赖项时,我仍然得到一条错误消息;
Error: No define call for bootstrap
Run Code Online (Sandbox Code Playgroud)
http://requirejs.org/docs/errors.html#nodefine
如果我理解正确的文档,enforceDefine应该忽略垫片,但事实并非如此.
我在这做错了什么?