来自 jquery 的 sourceMappingURL 在 apache 中生成 404 错误
Posted
技术标签:
【中文标题】来自 jquery 的 sourceMappingURL 在 apache 中生成 404 错误【英文标题】:sourceMappingURL from jquery generates 404 error in apache 【发布时间】:2013-08-12 00:37:16 【问题描述】:正在浏览 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) 它是用于调试目的(不了解用于什么调试目的)【问题讨论】:
【参考方案1】:有几种方法可以消除错误。
默认情况下,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 月
【讨论】:
作为后续,jQuery 的下载页面上有一个下载地图文件的链接(我昨晚没有注意到)。您还可以将此地图文件放在与 Web 服务器上的 jQuery 相同的文件夹中以停止 404。 Download the map file for jQuery 1.10.2【参考方案2】:JQuery 2.1.4 min 文件在尝试下载地图文件时导致 404 IE > 8。 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。
【讨论】:
以上是关于来自 jquery 的 sourceMappingURL 在 apache 中生成 404 错误的主要内容,如果未能解决你的问题,请参考以下文章
将供应商 CSS 与 LESS 结合后以及 gulp-minify 后 Sourcemap 错误
react打包中不想要sourceMap,但是在命令里加'GENERATE_SOURCEMAP=false'后windows下报错'GENERATE_SOURCEMAP'
react打包中不想要sourceMap,但是在命令里加'GENERATE_SOURCEMAP=false'后windows下报错'GENERATE_SOURCEMAP'