最终效果
在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”以开始调试,默认为false
liveServer.settings.NoBrowser
:以不打开浏览器的方式启动服务,默认为falseliveServer.settings.ignoreFiles
:忽略配置文件列表liveServer.settings.donotShowInfoMsg
:不显示log信息,默认为falseliveServer.settings.host
:设置主机地址,默认127.0.0.1
liveServer.settings.donotVerifyTags
:HTML
中缺少body
或head
或其他支持标记,则关闭提示警告消息,默认值false
liveServer.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
都适用于每个文件。默认值:false
liveServer.settings.fullReload
:默认情况下,Live Server 会在不完全重新加载浏览器的情况下注入 CSS 更改。 您可以通过将此设置设为 true 来更改此行为。liveServer.settings.wait
:重新加载前的延迟时间,单位为毫秒,默认值:100
liveServer.settings.mount
:将目录挂载到路由,示例:
{
"liveServer.settings.mount": [ ["/", "/path1"],
["/", "/path2"],
["/root", "/dist"]
]
}
liveServer.settings.useLocalIp
: 使用当前的IP作为主机地址,默认值false
liveServer.settings.file
:进入点文件的路径, 对SPA
有用liveServer.settings.multiRootWorkspaceName
:当您处于多根工作区时,这是服务器的入口点。
参考文章
Deprecated Debugger for Chrome
Visual Studio Code debugger with Chrome refused to connect to localhost