更新Angular至5.2.7后Chrome无法调试TypeScript文件
我之前升级Angular版本时也碰到过这种头疼的情况,结合你的描述,给你几个具体的排查和解决方向:
检查TypeScript配置的键名拼写:你提到tsconfig.json里设了"sourcemap"为true,但TypeScript编译器的正确配置键是**
sourceMap**(驼峰写法,大写M)。Angular 4可能对键名大小写兼容度更高,但Angular 5配套的TypeScript版本(一般是2.4.x+)对配置键名的校验更严格,小写的"sourcemap"会被直接忽略,导致根本没生成sourcemap文件。赶紧把tsconfig.json里的这个键改成"sourceMap": true试试。确认Angular CLI的构建配置:Angular 5使用的是
.angular-cli.json(不是后续版本的angular.json),打开这个文件找到defaults > build > sourceMap,确保它被设为true。另外,如果你是用ng serve --prod启动的项目,生产模式下默认会禁用sourcemap,这时候需要手动加上--source-map参数,比如ng serve --prod --source-map。检查Chrome DevTools的sourcemap开关:打开Chrome的Sources标签页,点击右上角的齿轮图标进入设置,确认Enable JavaScript source maps和Enable CSS source maps这两个选项处于勾选状态。有时候浏览器更新或者误操作会关掉这些开关,导致无法解析sourcemap文件。
清理缓存并重新构建:旧缓存经常会引发奇怪的问题。先停止
ng serve,删除项目根目录下的node_modules/.cache文件夹,然后重新运行ng serve。同时在Chrome里按Ctrl+Shift+R强制刷新页面,清除浏览器缓存,之后再去Sources标签页搜索文件试试。验证sourcemap是否真的生成了:运行
ng build命令构建项目,然后查看dist文件夹里的文件,看看每个.js文件对应的有没有.js.map文件。如果没有,说明是构建配置的问题,回到前面的步骤排查;如果有,那大概率是Chrome这边的缓存或设置问题。
内容的提问来源于stack exchange,提问作者Starfleet Security

