JS - 无法组合lib文件

时间:2013-12-01 00:47:49

标签: javascript html shared-libraries synchronous

我在index.html文件中有多个lib文件,这些文件按照我正在运行的应用程序的正确顺序加载。

<!-- example of some of them... -->
<script src="/./sys/lib/jquery.min.js"></script>
<script src="/./sys/lib/jquery.ui.min.js"></script>
<script src="/./sys/lib/jquery.easing.min.js"></script>
<script src="/./sys/lib/underscore.min.js"></script>
<script src="/./sys/lib/handlebars.min.js"></script>
<script src="/./sys/lib/backbone.min.js"></script>
<script src="/./sys/lib/moment.min.js"></script>
<script src="/./sys/lib/libs.extensions.js"></script>

这些运行正常,它们已经全部缩小了。

现在,我想将这些全部合并到一个文件中以加载速度:

<script src="/./sys/lib/libs.all.js"></script>

所以我打开新的libs.all.js文件,然后逐一将缩小的.js文件粘贴到其中,修改,完全相同的序列如上所列。这有效,直到我到达moment.js。当我将其粘贴并运行时,我收到了JS错误。

TypeError: (intermediate value)(...) is not a function

我没有得到我所缺少的东西 - 如果我在HTML文件中同步加载它们时按正确的顺序粘贴它们,有什么区别?

3 个答案:

答案 0 :(得分:105)

最有可能你的一个js文件最后缺少;。打开你认为导致错误的那个并在最后添加;,或者将;添加到下一个js文件的第一行。

答案 1 :(得分:2)

修改javascript代码并不能解决问题的根本原因,因此只要引入新的JavaScript文件,就会再次发生这种情况。

你有至少很少的永久性修复选择 - 它们涉及改变构建,以便将来不会发生这种情况,即使缺少分号:

  • 在要连接的文件之间注入;。这通常是一个简单的单行更改,具体取决于您如何连接文件。
  • 首先缩小文件然后连接。这应该在你正在连接的文件之间留下\ n,允许ASI为你处理这个。

答案 2 :(得分:2)

只需添加半克隆和换行符

';\n'

在每个文件的末尾