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 文件的主要内容,如果未能解决你的问题,请参考以下文章

可以将多个lib文件合并成一个lib文件吗

怎么合并js

Node.js 合并音频和视频流并将其通过管道传输到客户端

UnableToResolveError:无法从库/ART/React Native ART.js 中解析模块“合并”

将项目中lib下jar包合并到Tomcat中lib下

Gulp 合并 bower 文件