使用CDNJS加载资源时出现map文件404错误的咨询
关于Safari中CDN资源map文件404错误的解答
先给你确认下:你对map文件的理解是完全正确的!它们是源映射文件,作用是把压缩后的代码(比如bootstrap.min.css、bootstrap.bundle.min.js这类经过压缩混淆的文件)映射回未压缩的原始源码,方便开发者在浏览器调试时能清晰看到未压缩的代码结构——对页面的正常运行没有任何影响,只是个调试辅助工具而已。
接下来聊聊这个404错误的问题:
为什么会出现?
浏览器在加载压缩后的资源时,默认会自动尝试请求对应的map文件(比如加载bootstrap.min.css就会自动找bootstrap.min.css.map),如果CDNJS没有提供该版本对应的map文件,或者文件路径配置有偏差,就会出现这个404报错。能不能修复?当然可以!而且方法很简单:
- 关闭浏览器的源映射自动请求(最推荐的方案)
打开Safari的开发者工具,点击右上角的齿轮图标进入设置界面,取消勾选「Enable CSS Source Maps」和「Enable JavaScript Source Maps」选项。这样浏览器就不会再主动请求map文件,404错误自然就消失了。 - (可选)手动指定map文件路径(如果CDNJS有提供的话)
你可以确认下对应版本的map文件是否在CDNJS上存在,如果有的话,在你的CSS/JS资源引用末尾添加源映射注释,比如给bootstrap.min.css加:
不过一般来说没必要这么折腾,关闭源映射功能更省心。/*# sourceMappingURL=https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.2/css/bootstrap.min.css.map */
- 关闭浏览器的源映射自动请求(最推荐的方案)
这属于服务器端错误吗?
严格来说不算核心的服务器端错误——CDNJS提供的核心功能资源(css/js文件)是正常加载可用的,只是缺少了调试用的map文件。而且这个问题完全可以通过客户端设置解决,不需要依赖CDN服务商修复。
内容的提问来源于stack exchange,提问作者MoPaMo




