-
Notifications
You must be signed in to change notification settings - Fork 32
Description
Environment
Provide version numbers for the following components (information can be retrieved by running tns info in your project folder or by inspecting the package.json of the project):
- CLI: 6.1.0
- Cross-platform modules: Not applicable
- Android Runtime: Not applicable
- iOS Runtime: Not applicable
- Plugin(s): Not applicable
- VSCode:
Version: 1.37.1 (user setup)
Commit: f06011ac164ae4dc8e753a3fe7f9549844d15e35
Date: 2019-08-15T16:17:55.855Z
Electron: 4.2.7
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Windows_NT x64 10.0.17134
Describe the bug
In case you set output.library in the webpack.config.js file, the application does not hit breakpoints in VSCode anymore.
To Reproduce
$ tns create myApp --js$ cd myApp- Now edit
webpack.config.jsand addlibrary: "myLib"in theconfig.outputsection:
output: {
library: "myLib",
pathinfo: false,
path: dist,
sourceMapFilename,
libraryTarget: "commonjs2",
filename: "[name].js",
globalObject: "global",
hashSalt
},
- Now open the project with VSCode and add NativeScript configuration for debug.
- Run the
Launch on AndroidorLaunch on iOSconfiguration. - After application is running and debugger is attached, try to set a breakpoint in
main-view-model.js'sonTaphandler. The breakpoint will be red dot in case it is successfully placed and grayed out otherwise. We expect to have red dot, but it is gray. - Now tap the button - breakpoint should be hit, but it is not
Expected behavior
Debugging to work.
Sample project
Additional context
The problem is in the parsing of the generated source maps - in case you parse them, the source URLs in them are in the following format:
"webpack://myLib/./main-view-model.js"
while we expect them to start with webpack:///
Workaround
Add the following lines in your launch.json:
"sourceMapPathOverrides": {
"webpack:///*": "${workspaceRoot}/<app dir name>/*",
"webpack://<library name>/*": "${workspaceRoot}/<app dir name>/*"
}Where <app dir name> is the name of your app folder as defined in nsconfig.json (probably app or src) and <library name> is the value of output.library from webpack.config.js.
For example, for the project created as described in the steps to reproduce, the snippet is:
"sourceMapPathOverrides": {
"webpack:///*": "${workspaceRoot}/app/*",
"webpack://myLib/*": "${workspaceRoot}/app/*"
}