浏览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,据我所知(如果我错了,请告诉我):
答案 0 :(得分:31)
有多种方法可以删除错误。
默认情况下,Chrome会启用源地图。您可以通过打开开发人员工具并更改常规设置来禁用此功能。取消选中“启用源映射”选项。这当然不会修复Apache上的错误。
将您的网页更改为使用由jQuery或Google提供的CDN,而不是使用本地版本。这将阻止您的本地Apache在日志中显示该问题。
或者,您必须重写本地版本的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功能,在过去几个月中已经发生了一些变化。
有关sourceMappingURL的更多信息:Introduction to JavaScript Source Maps,2012年3月
请参阅以下与sourceMappingURL最近更改相关的链接: sourceMappingURL and sourceURL syntax changed,2013年6月
答案 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。