【问题标题】:JS - Can't combine lib filesJS - 无法合并 lib 文件
【发布时间】:2013-12-16 22:21:04
【问题描述】:

我在一个 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 文件中时以正确的顺序粘贴它们,有什么区别?

【问题讨论】:

  • 很可能您的一个 js 文件缺少 ;在末尾。打开您认为导致错误的那个并添加一个 ;最后,或添加一个 ;到下一个 js 文件的第一行。
  • 你能把你的评论变成答案吗?你完全搞定了,我需要接受你的回答。

标签: javascript html shared-libraries synchronous


【解决方案1】:

只需添加半克隆和换行符

';\n'

在每个文件的末尾

【讨论】:

    【解决方案2】:

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

    对于永久修复,您至少有几个选择 - 它们涉及更改构建,以便将来不会发生这种情况,即使缺少分号:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 天哪,非常感谢。你不知道我为此付出了多少努力
      • 谢谢,这为我节省了大量时间:)
      • 谢谢,帮了我很多忙!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 1970-01-01
      • 2012-11-10
      • 2018-01-16
      • 1970-01-01
      相关资源
      最近更新 更多