You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Angular开发者工具中.ts源文件无法显示的问题求助

我之前也碰到过这个头疼的问题!明明tsconfig里sourceMap开了,但调试时就是找不到.ts源文件,没法断点。给你列几个我踩过的坑和排查方向:

排查Angular无法查看.ts源文件的常见原因
  • 检查sourceMap的配置层级是否正确
    别大意!有时候我们会不小心把"sourceMap": true写在compilerOptions外面,这就完全不生效了。一定要确保它在tsconfig.jsoncompilerOptions对象内,正确格式如下:

    {
      "compilerOptions": {
        "sourceMap": true,
        // 其他编译配置...
      }
    }
    
  • 清理构建缓存,重新编译
    Angular的缓存经常会“搞乌龙”,旧的source map可能没被更新覆盖。试试执行以下命令彻底清理:

    ng clean
    ng serve --delete-output-path
    

    也可以手动删除项目根目录下的dist文件夹和.angular缓存目录,再重新启动项目,确保生成全新的source map文件。

  • 检查浏览器开发者工具的源文件设置
    打开Chrome或Firefox的DevTools,在Sources面板里做这两步检查:

    • 确认勾选了Enable JavaScript source maps(Chrome可以在Settings > Experiments或者Sources面板的设置菜单里找到)
    • 看看Angular的源文件是否藏在webpack://或者ng://路径下,有时候需要展开这些目录才能找到你的业务.ts文件。
  • 检查angular.json的构建配置是否覆盖了sourceMap
    有时候tsconfig.json的配置会被angular.json里的构建设置覆盖。打开angular.json,找到对应项目的architect > build > options,确认sourceMap是否设为true

    "architect": {
      "build": {
        "options": {
          "sourceMap": true,
          // 其他构建配置...
        }
      }
    }
    

    另外,ng serve默认使用development配置,也要检查architect > serve > configurations > development里的sourceMap设置是否为true

  • 确认是否有代码压缩工具删除了source map
    如果项目中使用了Terser这类代码压缩工具,要检查它的配置是否开启了删除source map的选项。确保压缩时保留source map文件,这样调试时才能映射到.ts源文件。

  • 检查IDE的调试配置(如果用IDE直接调试)
    如果你用VS Code这类IDE直接调试Angular,要确认.vscode/launch.json的配置正确:

    {
      "configurations": [
        {
          "type": "chrome",
          "request": "launch",
          "name": "Launch Chrome against localhost",
          "url": "http://localhost:4200",
          "webRoot": "${workspaceFolder}",
          "sourceMaps": true
        }
      ]
    }
    

    重点确认sourceMaps设为truewebRoot指向项目根目录。

内容的提问来源于stack exchange,提问作者DivDev

火山引擎 最新活动