I noticed that the default launch configuration generated by VSCode for npm debugging (Launch via NPM) sets the configuration type as "pwa-node" by default.
type
attributeThe type
attribute specifies the type of debugger to use for this launch configuration. Every installed debug extension introduces a type: node
for the built-in Node debugger, for example, or php
and go
for the PHP and Go extensions.
type : pwa-node
Javascript Debugger is a built-in extension for debugging in VS code. This extension is installed and enabled by default in the latest versions of VS code. The "type": "pwa-node"
comes from the Javascript Debugger (Nightly), the preview version. The pwa-
prefix is used to distinguish which debugger should be used.
The "type": "pwa-node"
is added to your launch.json
when you click Node.js(Preview)
instead of Node.js
in the drop down menu while creating the launch.json
file from the debugging section of the sidebar.
If you open the defaultSettings.json
of your VS code, you can see the settings(enabled) for the preview version, they look like following:
"debug.javascript.usePreview": true,
"debug.javascript.usePreviewAutoAttach": true,
If you want to use this nightly version of the debugger extension, you need to disable the built-in debugger and install the nightly version from the marketplace. To do so, follow these steps:
@builtin @id:ms-vscode.js-debug
@id:ms-vscode.js-debug-nightly
Now you can debug the Typescript and Javascript code using the JavaScript Debugger (Nightly).
If you get the error that debug type 'pwa-node' is not supported
, remove the following settings from your settings.json
:
"debug.node.useV3": true,
"debug.chrome.useV3": true
type : node
If you want the previous behaviour, that is "type": "node"
, click Node.js
instead of Node.js(Preview)
in the drop down menu while creating the launch.json
file from the debugging section of the sidebar. You can also just type "type": "node"
by hand in the launch.json
instead of doing it from the menu, it won't make any difference.
If you have made the above changes for the nightly version of the Javascript Debugger, you should undo them for the built-in Javascript Debugger to work properly.
The pwa-
prefix is/was a way to target VS Code's new JavaScript debugger, which at the time was named vscode-pwa.
https://github.com/microsoft/vscode-js-debug/pull/32
Talking with Kai and Rob, something we want to do is make the PWA extension a drop-in replacement for the existing two Chrome and Node debug extensions. Therefore we want to have the PWA extension be able to read and support the existing configuration settings, and be invoked by launching the
chrome
andnode
types. More work, coming soon in a followup PR, will be needed to actually deal with these settings.This also moved the build to a Gulp system, supporting NLS and matching the existing extensions. Part of the build is the ability to have the types and commands be prefixed with
pwa-
: runninggulp
will generate an extension that registers typespwa-node
andpwa-chrome
, whilegulp --drop-in
will remove these prefixes. This lets us develop and debug the extension using the existing packages, until such time as we want to start dogfooding it.
Also here they talk about how to use the targeting mechanism: https://github.com/microsoft/vscode/issues/85984