Angular CLI 构建 SourceMap,但不部署它们
Angular CLI building SourceMaps, but not deploying them
我们正在使用前端错误记录工具 Sentry
来查看我们在 angular 应用程序中遇到的错误。
Sentry
允许用户上传他们的 SourceMap 文件,所以我进入我们的 angular.json
并设置 "sourceMap": true
。正如预期的那样,它创建了很多我们上传到 Sentry
的 .js.map
文件,但是为了明显的安全性,我们删除了它们并且 不 部署它们原因。
问题是由于某种原因,Google Chrome Dev Tools 以某种方式知道生成了 SourceMap 文件,甚至尝试访问它们!
所以这是我的问题:
- Google Chrome 是如何计算出生成 SourceMaps 的?我假设
html
、css
或 js
文件中的内容说明了这一点。
- 我该如何解决这个问题?我想获得 SourceMaps,但我不想让任何人知道它们的存在,尤其是它们的位置。
旁注:虽然我多次提到 Sentry,但与问题无关。我只是想解释一下,为什么我们想要这个。
第一个:
正如@jonrsharpe 指出的那样,事实证明 Angular 在 css
和 js
文件和 Google Chrome 的末尾注入了 //# sourceMappingURL=...
注释(可能其他浏览器)解析它并使用它来显示原始堆栈跟踪。
第二个:
这似乎是可行的,通过为 sourceMap
参数配置 hidden: true
,如下所示:
"sourceMap": { "scripts": true, "styles": true, "hidden": true, "vendor": true }
似乎 sourceMap
可以是 bool
或复杂对象。请看angular docs here.
我们正在使用前端错误记录工具 Sentry
来查看我们在 angular 应用程序中遇到的错误。
Sentry
允许用户上传他们的 SourceMap 文件,所以我进入我们的 angular.json
并设置 "sourceMap": true
。正如预期的那样,它创建了很多我们上传到 Sentry
的 .js.map
文件,但是为了明显的安全性,我们删除了它们并且 不 部署它们原因。
问题是由于某种原因,Google Chrome Dev Tools 以某种方式知道生成了 SourceMap 文件,甚至尝试访问它们!
所以这是我的问题:
- Google Chrome 是如何计算出生成 SourceMaps 的?我假设
html
、css
或js
文件中的内容说明了这一点。 - 我该如何解决这个问题?我想获得 SourceMaps,但我不想让任何人知道它们的存在,尤其是它们的位置。
旁注:虽然我多次提到 Sentry,但与问题无关。我只是想解释一下,为什么我们想要这个。
第一个:
正如@jonrsharpe 指出的那样,事实证明 Angular 在 css
和 js
文件和 Google Chrome 的末尾注入了 //# sourceMappingURL=...
注释(可能其他浏览器)解析它并使用它来显示原始堆栈跟踪。
第二个:
这似乎是可行的,通过为 sourceMap
参数配置 hidden: true
,如下所示:
"sourceMap": { "scripts": true, "styles": true, "hidden": true, "vendor": true }
似乎 sourceMap
可以是 bool
或复杂对象。请看angular docs here.