JS - 无法合并 lib 文件
Posted
技术标签:
【中文标题】JS - 无法合并 lib 文件【英文标题】:JS - Can't combine lib files 【发布时间】: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 文件的第一行。 你能把你的评论变成答案吗?你完全搞定了,我需要接受你的回答。 【参考方案1】:只需添加半克隆和换行符
';\n'
在每个文件的末尾
【讨论】:
【参考方案2】:修改 javascript 代码并不能解决问题的根本原因,因此一旦您引入新的 JavaScript 文件,这种情况就可能再次发生。
对于永久修复,您至少有几个选择 - 它们涉及更改构建,以便将来不会发生这种情况,即使缺少分号:
在要连接的文件之间注入;
。这通常是一个简单的单行更改,具体取决于您连接文件的方式。
首先缩小文件,然后连接。这应该在您要连接的文件之间留下一个 \n,让 ASI 为您处理这个问题。
【讨论】:
【参考方案3】:很可能您的一个 js 文件最后缺少;
。打开你认为导致错误的那个并在末尾添加;
,或者在下一个js文件的第一行添加;
。
【讨论】:
天哪,非常感谢。你不知道我为此付出了多少努力 谢谢,这为我节省了大量时间:) 谢谢,帮了我很多忙!以上是关于JS - 无法合并 lib 文件的主要内容,如果未能解决你的问题,请参考以下文章