【H5开发】在VScode中使用DebuggerforChrome调试TypeScript【续】

版权声明:本文为博主原创文章,如需转载请注明出处,谢谢。喜欢请关注哟~ https://blog.csdn.net/sjt223857130/article/details/80766470

在此前的一篇文章中。介绍了如何在VScode中使用Debugger for Chrome来调试TypeScript

参见:https://blog.csdn.net/sjt223857130/article/details/80176943


调试时,按F5即可运行。但仍有一些不足,本文要解决的几个问题如下:

  • (1)希望按F5进行debug调试前进行一次编译代码。

而不用每次都要人工编译,当然你可以设置监视文件改变的时候自动编译。

不过改下代码保存就自动编译,也太频繁了吧?

  • (2)希望在debug打开Chrome浏览器后,VScode自动从终端切换到“调试控制台”。

这样不用每次都要用鼠标从终端点击切换到调试控制台来查看输出。

  • (3)debug时,要看到ts源码进行断点,而不是在js中。

这开启sourceMaps选项其实还不够。


以下分别解决以上问题。


(1)希望按F5进行debug调试前进行一次编译代码。

解决方案:增加 tasks.json 配置。这里我们增加了两个,上面的是编译命令,下面的是启动webServer。

  • 以下是tasks.json 的内容。

{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "build",
"label": "build",
"problemMatcher": []
},
{
"type": "npm",
"script": "web",
"label": "web",
"problemMatcher": []
}
]
}

上面的build是一个script名称,它对应的是package.json里面的script命令。

  • 以下是package.json内容。

{
"name": "stage3d",
"version": "1.0.0",
"description": "没有说明",
"main": "index.js",
"scripts": {
"build": "tsc-x",
"xxx": "tsc-x -w",
"web": "lite-server -c configs/http-config.json"
},
"author": "sunnyboxs",
"license": "ISC",
"dependencies": {},
"devDependencies": {
"gulp": "^3.9.1",
"gulp-concat": "^2.6.1",
"gulp-uglify": "^3.0.0"
}
}

注意,需要指定它们的label名称,供launch.json中调用。在launch.json中我们增加一行命令。

"preLaunchTask": "build", 

  • 以下是launch.json的内容。

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"port": 9222,
"sourceMaps": true,
"preLaunchTask": "build",
"url": "http://192.168.137.137:8090/./bin/index.html",
"webRoot": "${workspaceFolder}"
}
]
}

preLaunchTask 表示在按下F5进行debug前,需要执行的任务,这里指定了build标签名,就是tasks.json里面的任务名称。

这样一来,第一个问题解决。注意package.json--->tasks.json--->launch.json 这三者的关联性。

其中,launch.json和tasks.json在项目的.vscode目录下。



(2)希望在debug打开Chrome浏览器后,VScode自动从终端切换到“调试控制台”。

解决方案:其实从VS Code(1.2.0)最新亮点和特性全介绍中,我们可以发现这个功能的身影。

可能是VSCoce功能太多更新大频繁,不是每次都能注意到它新增的功能。到现在已经是1.24.0版本了。

为了在VS Code中提供更好的内部调试控制台,我们在 launch.json 中引入了 internalConsoleOptions 设置(参见#6159)。如果你想在调试过程中使用外部终端,同时在VS Code中关注调试的代码,这个功能会对你有很大帮助。提供的功能有:

  • neverOpen:VS Code 永远不会 打开调试控制台。
  • openOnFirstSessionStart:VS Code在 第一次 调试会话时打开调试控制台。
  • openOnSessionStart:VS Code在 每一次 调试会话时打开调试控制台。

也就是说,只需要在launch.json中加入internalConsoleOptions的值为openOnSessionStart就可以了。

{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"port": 9222,
"sourceMaps": true,
"preLaunchTask": "build",
"internalConsoleOptions": "openOnSessionStart",
"url": "http://192.168.137.137:8090/./bin/index.html",
"webRoot": "${workspaceFolder}"
}
]
}

这样,你每次按F5,终端编译完成后,弹出Chrome浏览器,vscode就会自动从终端切换到调试控制台。


这样第二个问题就解决了。



(3)debug时,要看到ts源码进行断点,而不是在js中。这开启sourceMaps选项其实还不够。

解决方案:你如果使用是http-server做为web服务器来断点调试。是不行的,可能需要别的选项,如果你知道可留言给我。

我这里,是必须要使用lite-server这个npm插件来做为web服务器,才会有sourceMap的断点调试。

但前提是,你在ts的编译选项tsconfig.json中和运行配置launch.json中需要开启以下选项。


    "sourceMap": true,

这样,lite-server服务器才能识别并加载到map文件。sourceMap


以上都是一些配置上的小问题,在此记录一下。

希望给大家也有所帮助。






猜你喜欢

转载自blog.csdn.net/sjt223857130/article/details/80766470
今日推荐