来自jquery的sourceMappingURL在apache中生成404错误

时间:2013-08-10 00:39:40

标签: jquery http-status-code-404

浏览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结尾的连接?

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

我能找到的唯一相关内容是this link,据我所知(如果我错了,请告诉我):

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

2 个答案:

答案 0 :(得分:31)

有多种方法可以删除错误。

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

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

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

  4. 自:

    /*! 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功能,在过去几个月中已经发生了一些变化。

答案 1 :(得分:0)

JQuery 2.1.4 min文件导致404与IE> 8当它试图下载地图文件时。 jquery-2.1.4.min.js跟随最后一行:

//# sourceMappingURL=jquery.min.map

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

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

步骤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 min文件中的最后一行,这反过来会告诉浏览器不要请求映射文件)。

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

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