angular-cli icon indicating copy to clipboard operation
angular-cli copied to clipboard

vite dev-server doesn't allow lazy loaded modules debugging

Open alfmosmq opened this issue 1 year ago • 4 comments

Command

serve

Is this a regression?

  • [X] Yes, this behavior used to work in the previous version

The previous version in which this bug was not present was

16 (with webpack)

Description

If you try to debug a lazy loaded component form vscode, and set a breakpoint, say into ngOnInit of the component, vite never stops when reaches the breakpoint. immagine

It's difficult to give more data, as

  • there is no way to change vite config (to add verbosity, for example)
  • looking in the output window, there is nothing tha allows to see vite output

Minimal Reproduction

create a new 18.2 application, add a lazy loaded route, start debugging from visual studio code, set a breakpoint on a line inside the lazy loaded component. the component renders correctly but vite never stops for the breakpoint. Here a repository that reproduces the bug. I tested it only in Vscode. https://github.com/alfmosmq/lazy-loading-debug-test

Exception or Error

No response

Your Environment

Angular CLI: 18.2.2
Node: 20.17.0
Package Manager: npm 10.2.4
OS: win32 x64

Angular: 18.2.2
... animations, cli, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, platform-server
... router, ssr

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1802.2
@angular-devkit/build-angular   18.2.2
@angular-devkit/core            18.2.2
@angular-devkit/schematics      18.2.2
@schematics/angular             18.2.2
rxjs                            7.8.1
typescript                      5.5.4
zone.js                         0.14.10

Anything else relevant?

this image shows that the app is actually split in main and a lazy loaded module immagine launch.json:

{
  // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
  "version": "0.2.0",
  "configurations": [
    {
      "name": "ng serve",
      "type": "chrome",
      "request": "launch",
      "preLaunchTask": "npm: start",
      "url": "http://localhost:4200/"
    },
    {
      "name": "ng test",
      "type": "chrome",
      "request": "launch",
      "preLaunchTask": "npm: test",
      "url": "http://localhost:9876/debug.html"
    }
  ]
}

tasks.json:

{
  // For more information, visit: https://go.microsoft.com/fwlink/?LinkId=733558
  "version": "2.0.0",
  "tasks": [
    {
      "type": "npm",
      "script": "start",
      "isBackground": true,
      "problemMatcher": {
        "owner": "typescript",
        "pattern": "$tsc",
        "background": {
          "activeOnStart": true,
          "beginsPattern": {
            "regexp": "(.*?)"
          },
          "endsPattern": {
            "regexp": "bundle generation complete"
          }
        }
      }
    },
    {
      "type": "npm",
      "script": "test",
      "isBackground": true,
      "problemMatcher": {
        "owner": "typescript",
        "pattern": "$tsc",
        "background": {
          "activeOnStart": true,
          "beginsPattern": {
            "regexp": "(.*?)"
          },
          "endsPattern": {
            "regexp": "bundle generation complete"
          }
        }
      }
    }
  ]
}

alfmosmq avatar Sep 03 '24 14:09 alfmosmq

I had a quick look at this, and I was able to replicate it, the strange thing is that the breakpoint is not hit only the first time. If there is a page is refreshed it works fine.

alan-agius4 avatar Sep 03 '24 14:09 alan-agius4

is there some way to enable verbose on vite and see the output? I could try to investigate deeper

alfmosmq avatar Sep 03 '24 14:09 alfmosmq

Hello !

Is there any news or workaround regarding this issue please ?

MaewenPelletier avatar Nov 12 '24 08:11 MaewenPelletier

VSCode 1.104. Angular 19.1.8. Same pitfall. Debugger finds breakpoint only after page refresh. I.e. when you start a debugger and it opens a windows for the first time; trigger you action - debugger opens VM12345678 file with "urlHash" content. after page refresh - it links to the sources correctly

Anatoliy-Tishaev avatar Sep 19 '25 21:09 Anatoliy-Tishaev