1

我有一个 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 !

我不知道该怎么办 !!

谢谢各位

4

1 回答 1

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 -->
于 2013-10-01T06:57:55.180 回答