匿名的define()模块IE8不匹配

时间:2013-09-27 17:03:54

标签: internet-explorer requirejs

我有一个关于requireJS和ie8的错误:

Mismatched anonymous define() module

此错误仅出现在IE8中。

我知道原点:

我使用HTML评论添加了es5shim和json3库,如下所示:

<!--[if lt IE 9]>
  <script src="bower_components/es5-shim/es5-shim.js"></script>
  <script src="bower_components/json3/lib/json3.min.js"></script>
<![endif]-->

事实上似乎es5shim和json3使用了define()函数。这是错误的起源。

我可以解决它删除HTML注释并在requirejs中像其他一样加载这些库。

但我不会只为IE8提供这些图书馆!

我不知道该怎么做!!

Thx guys

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。事实上,es5shim和json3使用define()函数来实现AMD兼容性。

但我必须通过HTML评论将它们从requirejs中加载出来:

  <!--[if lt IE 9]>
  <script src="bower_components/es5-shim/es5-shim.js"></script>
  <script src="bower_components/json3/lib/json3.min.js"></script>
  <![endif]-->

问题是我在data-main

之后添加了此评论
  <!-- build:js scripts/amd-app.js -->
  <script src="bower_components/requirejs/require.js" data-main="/scripts/main" </script>
  <!-- endbuild -->

 <!--[if lt IE 9]>
 <script src="bower_components/es5-shim/es5-shim.js"></script>
 <script src="bower_components/json3/lib/json3.min.js"></script>
 <![endif]-->

所以它失败了。如果我在data-main之前发表评论:

 <!--[if lt IE 9]>
 <script src="bower_components/es5-shim/es5-shim.js"></script>
 <script src="bower_components/json3/lib/json3.min.js"></script>
 <![endif]-->

 <!-- build:js scripts/amd-app.js -->
 <script src="bower_components/requirejs/require.js" data-main="/scripts/main" </script>
 <!-- endbuild -->