1.报错找不到jquery.min.map
当打开引入jQuery脚本的页面时,在Chrome的控制台中报了“GET http://localhost/libs/jquery.min.map 404 (Not Found)”的错误。 刚开始以为是Chrome安装插件导致的错误,可是把引入换成jQuery开发版本时,错误就不见了。并且只有Chrome会有这个错误提示,FireFox、IE不会报错。Chrome 自行开启了Enable source maps 的选项但你又沒有放Source map 导致找不到。 后来发现原来是jQuery脚本中 "//@ sourceMappingURL=jquery-1.10.2.min.map" 这一行惹的祸。如果是布置到生产环境中去,你可以把上面那行代码直接删掉。如果是在开发环境中,你应该下载jquery-1.10.2.min.map文件,放到jQuery同级目录中去(需要对应的source map文件)。
如果想关掉错误提示,还可以在Chrome的Developer Tools的Setting中将Enable source maps取消选中。
2.解决办法
解決方式1:
将 Developer Tools ->设置 Enable source maps 关闭;
解決方式2:
下载同一版本的source maps跟jquery.js同目录;
source maps 会跟 jquery 同位置
Jquery 位置 http://code.jquery.com/jquery-1.10.2.min.js
source maps位置 http://code.jquery.com/jquery-1.10.2.min.map
3.什么是Source Map
Source map就是一个Json格式的信息文件,里面储存着位置信息。也就是说,它是压缩后Js的一个字典文件。有了它,出错的时候,调试工具将直接显示原始代码,而不是压缩后的代码。这无疑给开发者带来了很大方便因为是Google自定义的规则,暂时只有基于Chromium开发的浏览器支持这个功能。
比如压缩前原变量是map,压缩后通过变量替换规则可能会被替换成a,这时source map文件会记录下这个mapping的信息,这样的好处就是说,在调试的时候,如果有一些JS报错,那么浏览器会通过解析这个map文件来重新merge压缩后的js,使开发者可以用未压缩前的代码来调试,这样会给我们带来很大的方便!
而这种还原性调试功能,目前只有chorme才具有,所以就会出现标题说的问题,我引入jquery-1.10.2.min.js的时候,在firefox下或者其他浏览器下是好的,在chorme下会报错找不到jquery-1.10.2.min.map文件,404,就是因为以上说的情况。jquery会检测浏览器是否支持source map功能,如果支持的话,那就去下载source map文件,而这个时候如果你引用的是官网的min.js那没问题,它会去自己的目录下找source map文件,而如果jquery.min.js文件在你的服务器上而服务器上又没有source map的话,那就会报错了。