【问题标题】:Here-API maps js-core.js minification failing MVCHere-API 映射 js-core.js 缩小失败的 MVC
【发布时间】:2019-04-03 13:35:00
【问题描述】:

我们正在使用 Here Maps JS API,并且在捆绑 mapjs-core.js 文件时可以看到它无法缩小并出现以下错误。

在将文件内容从下面的外部链接添加到本地 JS 文件并添加到 MVC 中的 System.Web.Optimization 包并出现在包的内容中后,会引发此错误。

当删除循环之外的 break 关键字作为测试时,它可以很好地捆绑,但是我们希望避免这样做。

运行时错误 JS1019: Can't have 'break' outside of loop: break

我们复制到本地的JS文件为:http://js.api.here.com/v3/3.0/mapsjs-core.js

将 mapsjs-core.js 内容包含为本地文件会影响 Google Lighthouse 页面分析分数,因为它检测到此文件未完全缩小。

谢谢

戴夫

【问题讨论】:

    标签: javascript asp.net-mvc here-api


    【解决方案1】:

    如果您不删除脚本通常附带的 .min 文件,则此问题在 .ASP.NET 捆绑系统中很常见(因为它们将再次被缩小,问题就来了)。 asp.net 捆绑系统负责生成缩小文件并在构建时捆绑,因此您无需包含/拥有它们。

    【讨论】:

    • 感谢您的回答,请您进一步解释。根据我们的测试,提供的所有其他 JS 文件(例如 mapsjs-service.js)使用相同的方法可以很好地捆绑这些文件,没有任何问题。我们尝试使用和不使用 .min 后缀来命名文件。如果不将此文件包含在捆绑包中,并使用与您托管的文件内容相同的本地文件直接链接到它,会导致它在进行本地审计时影响谷歌灯塔得分(Pagespeed 分析),因为它会检测到 mapsjs -core.js 尚未缩小。
    • 你提供的文件,据我所知没有完全缩小。所以我不确定这如何成为 ASP.NET 捆绑的常见问题。尤其是在不捆绑文件时仍然会发生这种情况。
    • 缩小不应该破坏你的脚本。我相信将所有脚本文件聚合到一个文件中可能会导致此问题。可能是其中一个脚本文件没有正确括起来,这可能会使捆绑包中的下一个文件继续使用前一个脚本文件。在 Angular 中,您可以将脚本的每个不同部分(例如控制器、指令)封装在 IIFE 中,这至少应该将您的脚本分割成离散的块,这些块可以毫无问题地聚合在一起。
    • 在捆绑和缩小它时,预缩小的闭包编译器代码会出现以下错误:“运行时错误 JS1019:不能在循环外有'break':break a”。该错误记录在此处,并且基于 JScript 10.0 标准
    • 感谢您的回复,这不是多个文件的聚合,因为单独捆绑此文件时会出现相同的问题,但如果我们忽略捆绑并直接链接到此文件,您仍然托管它导致灯塔页面分析分数上的建议表明您提供的文件未完全缩小。这就是我们尝试使用捆绑的原因,因为此文件尚未完全缩小,这意味着大小略高,因此会影响页面评分和性能。如果有帮助,我可以整理一个示例项目。
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-02
    相关资源
    最近更新 更多