调试JavaScript缩小错误(在Liferay 6.2中)



Liferay 6.2.尝试使用最佳实践,JS缩小就是其中之一。

但是,当您未缩小的 JavaScript 工作并且缩小产生这样的错误时,您会怎么做(在 Tomcat 控制台中):

12:23:48,794 ERROR [http-bio-8080-exec-10][MinifierUtil:111] 607: 21: identifier is a reserved word
12:23:48,797 ERROR [http-bio-8080-exec-10][MinifierUtil:111] 608: 45: identifier is a reserved word
12:23:48,802 ERROR [http-bio-8080-exec-10][MinifierUtil:111] 1: 0: Compilation produced 2 syntax errors.
12:23:48,805 ERROR [http-bio-8080-exec-10][MinifierUtil:88] JavaScript Minifier failed for_________    AUI().use('node', 'aui-base', 'aui-io-request', 'aui

[MinifierUtil:111] 607:21:和[MinifierUtil:111] 608:45:不是代码中的行号(jsp/ftl/...),正如人们从控制台日志和谷歌搜索"标识符是一个保留字"或"JavaScript Minifier失败for_________"对我几乎没有帮助(好吧,我通常知道 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords)。

<script></script>之间的代码粘贴到 JS lint 或提示或任何其他 JS 工具不是一种选择,因为它包含许多 JAVA 和 spring/freemarker/liferay 标签等......

所以 - 我的问题是 - 因为我无法找到调试它的最佳实践/方法 - 你有什么意见(甚至更好 - 经验:))?

好吧,您以另一种方式解决了问题 - 如果您(或其他人)再次遇到此问题,只需一些指针:

缩小器在这些

错误消息中报告行号和偏移量,但它们与缩小器看到的内容相关 - 例如,不是在您的 JSP、FTL 或其他文件中,而是在传递给缩小器的任何文件中。

读取简化器日志的方法是:

  • 607 行第 21 列以及第 608 行第 45 列有问题
  • 在下面的行中,你会看到JavaScript Minifier failed for_________ AUI().use('node', 'aui-base', 'aui-io-request', 'aui哪个是缩小器看到的内容的第一部分 - 找到此代码,你也许能够识别哪些内容被传递给缩小器并倒计时(好吧,从那里跳下 607 行)

附带问题:同意@Origineil的启动时间指向您遇到的另一个问题 - 除非您故意在启动时运行进程,否则它不应该那么多。 例如,如果您正在运行一个集群,并且每台机器都保留自己的 lucene 索引,则必须在启动时重新索引。如果你想解决这个问题,两个索引可能不是你想要的。但这只是一个例子,你没有要求这个。我只是想添加一些指针。我假设您已经调整了 JVM 内存设置,并且没有使用默认捆绑包的设置运行?

我终于设法通过以下方式解决了这个问题:

<script></script>之间复制渲染的(和未缩小的(!))代码,以及将其粘贴到 JShint/lint/online minifier 并在那里重新检查,

但我仍然想知道是否有更好的方法...(将服务器属性从开发人员更改为生产环境并返回意味着至少重新启动服务器几次,这需要大约 300 秒(仅在重新启动)我的新(!) i7 vPro 64GB、SSD HDD 工作站上,所以我尽量避免它:))。

顺便说一句:未缩小的代码有一些"弃用"但简单的 ECMA 方法,这些方法在我的 Win8.1 上的 JSFiddle 和所有最新浏览器中正常工作......

最新更新