Azure部署Angular静态应用遇bootstrap.min.js.map 4.1.1加载404错误求助
错误原因
Source Map是用来将压缩后的JS文件映射回原始源码的文件,目的是方便开发者在浏览器DevTools里调试压缩后的代码。你使用的Bootstrap 4.1.1的CDN版本的bootstrap.min.js文件末尾带有//# sourceMappingURL=bootstrap.min.js.map注释,浏览器加载这个JS文件时会自动尝试请求对应的map文件,但该CDN地址并没有提供这个map文件,所以返回404错误。
请求发起方
这个请求是浏览器自动触发的,和你的Angular应用服务无关,属于浏览器DevTools的调试行为——当检测到JS文件带有sourceMappingURL注释时,就会尝试下载对应的map文件用于源码映射。
解决方案
禁用浏览器的Source Map加载(快速解决)
打开浏览器DevTools → 点击右上角齿轮图标进入设置 → 取消勾选「Enable JavaScript source maps」和「Enable CSS source maps」,之后浏览器就不会再请求这类map文件了。更换支持Source Map的Bootstrap资源
如果需要保留调试功能,可以换成提供完整source map的Bootstrap资源:- 下载Bootstrap 4.1.1的完整安装包(包含
bootstrap.min.js.map文件),将bootstrap.min.js和对应的map文件一起部署到Azure静态应用的静态资源目录,然后修改应用中对Bootstrap的引用路径为本地路径。 - 更换到能提供对应source map的CDN链接。
- 下载Bootstrap 4.1.1的完整安装包(包含
移除Bootstrap文件中的sourceMappingURL注释
如果你是本地引入的Bootstrap文件,直接编辑bootstrap.min.js,删除文件末尾的//# sourceMappingURL=bootstrap.min.js.map这一行,浏览器就不会再发起该请求。通过Angular CLI配置优化(针对项目构建)
如果你是通过Angular CLI引入的Bootstrap,可在.angular-cli.json(Angular 5的配置文件)的build选项中设置"sourceMap": false,禁用生产环境下的source map生成(注意这仅针对Angular自身代码,第三方库的source map需要单独处理)。
内容的提问来源于stack exchange,提问作者Janciu

