31

正在浏览 apache 日志并发现有趣的事情:

当用户访问我包含 jquery 的任何页面时,apache 尝试获取 jquery-xxx.min.map 文件并因 404 错误而失败。这是一个例子:

xxx.xxx.xxx - - [Date:TIME +0000] "GET /js/lib/jquery-1.10.2.min.map HTTP/1.1" 404 3134 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36"

这并不奇怪,因为我显然没有这个 min.map 文件。我不喜欢这种行为。

查看jquery源代码,我发现

/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
//@ sourceMappingURL=jquery-1.10.2.min.map

首先是这个sourceMappingURL在评论里,没有其他命中。当我刚刚删除它时,404错误消失了。

我不知道 jquery 的人知道他们在做什么,但是谁能解释我:

  • 这个 sourceMappingURL 的意义是什么,它创建了一些以 404 结尾的连接?

  • 当我删除这条线时,我失去了什么?

我能找到的唯一相关的事情是这个链接,据我所知(如果我错了,请纠正我):

  • 它会在 IE 中产生一些错误(我正在通过 Chrome 查看)
  • 它已被弃用(当时我正在使用最新版本的 jQuery)
  • 它用于调试目的(尚未了解用于什么调试目的)
4

2 回答 2

31

有几种方法可以消除错误。

  1. 默认情况下,Chrome 会启用源地图。您可以通过打开开发人员工具并更改常规设置来禁用此功能。取消选中启用源映射选项。这当然不会修复 Apache 上的错误。

  2. 更改您的页面以使用由 jQuery 或 Google 提供的 CDN,而不是使用本地版本。这将阻止您的本地 Apache 在您的日志中显示该问题。

  3. 或者,您必须重写本地版本 jquery-1.10-2.min.js 顶部的注释以停止此错误。否则你需要等待 jQuery 的补丁。

从:

/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license
//@ sourceMappingURL=jquery-1.10.2.min.map
*/

到:

/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license */

sourceMappingURL 是一项 HTML5 功能,在过去几个月中发生了一些变化。

于 2013-08-11T04:17:16.370 回答
0

JQuery 2.1.4 min 文件在尝试下载地图文件时导致 IE > 8 的 404。jquery-2.1.4.min.js 最后一行如下:

//# sourceMappingURL=jquery.min.map

有两个(好的)选项可以解决这个问题。

选项一(首选,保留生产的地图文件请求)

步骤 1. 将 min 文件中的最后一行移动到第二行,如下所示

/*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */
//# sourceMappingURL=jqueryminmap

请注意,jquery.min.map 中的点已被删除。

步骤 2. 为地图文件添加一个不带转换的包。

        var jquerymap = new ScriptBundle("~/bundles/jqueryminmap").Include(
                    "~/Scripts/jquery-2.1.4.min.map");
        jquerymap.Transforms.Clear();
        bundles.Add(jquerymap);

即使这是首选方法,它也需要您更改源文件 (jquery-2.1.4.min.js)。希望 JQuery 开发人员或 IE 将在下一个版本中解决此问题。

选项二

在不删除转换的情况下添加 jquery 包(这会导致 MVC 引擎删除 2.1.4 分钟文件中的最后一行,这反过来会告诉浏览器不要请求地图文件)。

        var jquery = new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js");
        bundles.Add(jquery);

这两个选项都将修复 IE > 8 和 JQuery 2.1.4 的地图文件上的 404,但我更喜欢选项 ONE。

于 2015-08-31T16:05:29.983 回答