最终效果
在VSCode编辑器中使用F5打开带有http://localhost/...的网络页面。可以在VSCode编辑器中对代码进行调试,并且避免代码调试过程中出现CORS错误。
配置概述
原有launch.json配置直接启动debug方法失效,在VSCode官方网站Docs上的Debugging内容可以看到已经没有相关的配置说明,本文最终采用Live-Server插件进行配置。
工具准备
- VSCode软件,下载地址。
- 一个用于测试的项目。
- VSCode 上安装插件:
Live-Server
配置流程
-
用
VSCode装载项目
-
按F5,出现选择运行环境窗口
- 出现能运行的界面,服务是以本地文件访问的方式运行,而不是网络服务的形式运行。
-
点击
没有配置的下拉按钮,可以看到如下图所示情况,可以选择红色区域内两个选项,其中工作区选选项相当于给VSCode 工作区中的所有文件进行统一配置。而SayHello选项是所在文件目录的项目进行配置,选择此项进行添加配置操作。
-
点击配置项为
Chrome进行配置,然后会出现.vscode文件夹和launch.json文件。此时配置使项目以本地文件访问的形式运行,这并不是理想效果。
- 此时需要对
launch.json文件进行修改使它满足需求。
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Open sayhello.html",
"url": "http://localhost:8080/${fileBasename}",
"webRoot": "${workspaceFolder}",
"sourceMaps": true
// "webRoot": "${workspaceFolder}/wwwroot" 此语句表示:项目以独立服务启动,不能进行调试
}
]
}
-
修改后本地服务是没有办法打开的,结果见下图。并且还报出
crbug/1173575, non-JS module files deprecated.警告。原因是使用了浏览器默认限制的非安全端口号,出于安全考虑,都会设置默认的非安全不能访问的端口。网络上有两种解决方案:一是修改网络模式,二是修改Port端口。这两个方法测试后都是没有效的。 -
关闭代码运行,启动
Live-Server插件,此插件运行的位置在底部状态栏上,如果插件安装过多需要仔细找一下才能看到,如下图。启动后代码就会以网络服务方式运行了。启动前在设置里面找到Live Server Config选项,使用setting.json方式进行配置,添加或修改以下代码
{
"liveServer.settings.port": 5500,
"liveServer.settings.CustomBrowser" : "chrome",
"liveServer.settings.AdvanceCustomBrowserCmdLine": "chrome --incognito --remote-debugging-port=9222",
"liveServer.settings.NoBrowser" : true, //启动Live-Server时候不要启动浏览器
"liveServer.settings.ignoreFiles" : [
".vscode/**",
"**/*.scss",
"**/*.sass"
]
}
Live-Server启动按钮:
- 将
launch.json中url的值进行修改,修改如下
"url": "http://localhost:5500" //端口号,要与Live-Server的端口号一致
- 修改完成以后,我们按
F5运行。最终效果图如下
相关参数
launch.json配置参数中文解释,参考此篇文章VSCode launch.json配置详解
Live-Server配置参数:
liveServer.settings.port:自定义Live-Server端口号,设置为0,则会产生随机端口号,默认值5500liveServer.settings.root:服务器根目录,默认为当前工作区liveServer.settings.CustomBrowser:自定义要访问的浏览器liveServer.settings.AdvanceCustomBrowserCmdLine:设置浏览器启动参数liveServer.settings.ChromeDebuggingAttachment:启动 Live Server 并从调试窗口中选择“附加到 Chrome”以开始调试,默认为falseliveServer.settings.NoBrowser:以不打开浏览器的方式启动服务,默认为falseliveServer.settings.ignoreFiles:忽略配置文件列表liveServer.settings.donotShowInfoMsg:不显示log信息,默认为falseliveServer.settings.host:设置主机地址,默认127.0.0.1liveServer.settings.donotVerifyTags:HTML中缺少body或head或其他支持标记,则关闭提示警告消息,默认值falseliveServer.settings.https:开启https协议,示例:
"liveServer.settings.https": {
"enable": false, //https开关
"cert": "C:\https\server.cert", //绝对路径
"key": "C:\https\server.key", //绝对路径
"passphrase": "12345"
},
liveServer.settings.proxy:开启代理,示例:
"liveServer.settings.proxy": {
"enable": false, //代理开关.
"baseUri": "/", //代理起始位置.
"proxyUri": "http://localhost/php/" //实际的url.
},
liveServer.settings.useWebExt:如果为真,Live Reload将完全由Live Server Web Extension控制。 无论HTML是否有<body>标签,Live Reload都适用于每个文件。默认值:falseliveServer.settings.fullReload:默认情况下,Live Server 会在不完全重新加载浏览器的情况下注入 CSS 更改。 您可以通过将此设置设为 true 来更改此行为。liveServer.settings.wait:重新加载前的延迟时间,单位为毫秒,默认值:100liveServer.settings.mount:将目录挂载到路由,示例:
{
"liveServer.settings.mount": [ ["/", "/path1"],
["/", "/path2"],
["/root", "/dist"]
]
}
liveServer.settings.useLocalIp: 使用当前的IP作为主机地址,默认值falseliveServer.settings.file:进入点文件的路径, 对SPA有用liveServer.settings.multiRootWorkspaceName:当您处于多根工作区时,这是服务器的入口点。
参考文章
Deprecated Debugger for Chrome
Visual Studio Code debugger with Chrome refused to connect to localhost