Visual Studio Code 前端调试不完全指南
本文最初發(fā)布于我的個(gè)人博客:咀嚼之味
Visual Studio Code (以下簡(jiǎn)稱 vscode) 如今已經(jīng)代替 Sublime,成為前端工程師們最喜愛的代碼編輯器。它作為一個(gè)大型的開源項(xiàng)目,不斷推陳出新;社區(qū)中涌現(xiàn)出大量?jī)?yōu)質(zhì)的插件,以支持我們更加舒服地進(jìn)行開發(fā)工作。在近期的工作中,我嘗試通過 vscode 來提升調(diào)試代碼的幸福度,積累了一點(diǎn)點(diǎn)小心得在此與大家分享一下。
接下來的內(nèi)容將從以下幾方面進(jìn)行展開:
launch / attach
調(diào)試前端代碼
調(diào)試通過 Nodemon 啟動(dòng)的 Node 服務(wù)器
1. launch / attach
要使用 vscode 的調(diào)試功能,首先就得配置 .vscode/launch.json 文件。以最簡(jiǎn)單的 Node 調(diào)試配置為例:
{"version": "0.2.0","configurations": [{"type": "node","request": "launch","name": "Launch","program": "${workspaceRoot}/index.js"},{"type": "node","request": "attach","name": "Attach","port": 5858}] }其中最重要的參數(shù)是 request ,它的取值有兩種 launch 和 attach。
launch模式:由 vscode 來啟動(dòng)一個(gè)獨(dú)立的具有 debug 模式的程序
attach模式:附加于(也可以說“監(jiān)聽”)一個(gè)已經(jīng)啟動(dòng)的程序(必須已經(jīng)開啟 Debug 模式)
這兩種截然不同的模式到底有什么具體的應(yīng)用場(chǎng)景呢?且看后文。
2. 調(diào)試前端代碼
通過 vscode 調(diào)試前端代碼主要依賴于一個(gè)插件:Debugger for Chrome,該插件主要利用 Chrome 所開放出來的接口 來實(shí)現(xiàn)對(duì)其渲染的頁面進(jìn)行調(diào)試。可以通過 Shift + Cmd + X 打開插件中心,搜索對(duì)應(yīng)插件后直接安裝。安裝完成并重新加載 vscode 后,可以直接點(diǎn)擊調(diào)試按鈕并創(chuàng)建新的啟動(dòng)配置。如果你之前已經(jīng)創(chuàng)建過啟動(dòng)配置了,就可以直接打開 .vscode/launch.json 進(jìn)行修改。
其中調(diào)試 Chrome 頁面的配置如下所示:
{"version": "0.2.0","configurations": [{"type": "chrome","request": "launch","name": "啟動(dòng)一個(gè)獨(dú)立的 Chrome 以調(diào)試 frontend","url": "http://localhost:8091/frontend","webRoot": "${workspaceRoot}/frontend"}] }如之前所述,通過第一個(gè) launch 配置就能啟動(dòng)一個(gè)通過 vscode 調(diào)試的 Chrome。大家可以直接使用我組織好的項(xiàng)目 zry656565/vscode-debug-sample 進(jìn)行測(cè)試,測(cè)試方法在該項(xiàng)目的 README 里面寫得很清楚了。簡(jiǎn)要步驟概括為:
npm run frontend
啟動(dòng)調(diào)試配置:“啟動(dòng)一個(gè)獨(dú)立的 Chrome 以調(diào)試 frontend”
在 frontend/index.js 中加斷點(diǎn)
訪問 http://localhost:8091/frontend/
延伸問題
使用 launch 模式調(diào)試前端代碼存在一個(gè)問題,就是 vscode 會(huì)以新訪客的身份打開一個(gè)新的 Chrome 進(jìn)程,也就是說你之前在 Chrome 上裝的插件都沒法在這個(gè)頁面上生效(如下圖所示)。
在這種情況下 attach 模式就有它存在的意義了:對(duì)一個(gè)已經(jīng)啟動(dòng)的 Chrome 進(jìn)行監(jiān)聽調(diào)試。
{"version": "0.2.0","configurations": [{"type": "chrome","request": "attach","name": "監(jiān)聽一個(gè)已經(jīng)啟動(dòng)調(diào)試模式的 Chrome","port": 9222,"url": "http://localhost:8091/frontend","webRoot": "${workspaceRoot}/frontend"}] }其中 9222 是 Chrome 的調(diào)試模式推薦的端口,可以根據(jù)需要進(jìn)行修改。不過目前我并沒有成功實(shí)施這個(gè)設(shè)想,對(duì)此有興趣的同學(xué)可以從下面這兩個(gè)鏈接入手去研究一下:
Chrome DevTools Protocol Viewer
Debugger for Chrome / Attach
有一部分遇到的問題可以直接在 Debugger for Chrome 的 FAQ 中得到解答。
3. 調(diào)試通過 Nodemon 啟動(dòng)的 Node 服務(wù)器
如今,使用 Node 服務(wù)器開發(fā)一些中間層的服務(wù)也慢慢納入了所謂“大前端”的范疇。而在開發(fā) Node 服務(wù)時(shí),我們通常要借助類似于 nodemon 這樣的工具來避免頻繁手動(dòng)重啟服務(wù)器。在這種情況下,我們又如何利用 vscode 來進(jìn)行斷點(diǎn)調(diào)試呢?先來看看示例配置文件:
{"version": "0.2.0","configurations": [{"type": "node","request": "attach","name": "附加于已啟動(dòng)的 Node 服務(wù)器(debug模式)","port": 5858,"restart": true},{"type": "node","request": "attach","name": "附加于已啟動(dòng)的 Node 服務(wù)器(inspect模式)","port": 9229,"restart": true}] }首先,為了配合 nodemon 在監(jiān)聽到文件修改時(shí)重啟服務(wù)器,此處需要添加一個(gè) restart 參數(shù)。同時(shí)大家可能注意到了,這里給出了兩種模式,大家可能根據(jù)以下區(qū)別來選擇合適自己的協(xié)議:
| io.js | all | no |
| node.js | < 8.x | >= 6.3 (Windows: >= 6.9) |
| Electron | all | not yet |
| Chakra | all | not yet |
通俗來說,舊版 Node (< 6.3) 推薦使用 Legacy Protocol (--debug模式,默認(rèn) 5858 端口),而新版的 Node (>= 6.3) 推薦使用 Inspector Protocol (--inspect模式,默認(rèn) 9229 端口)。
需要注意的是,在啟動(dòng) nodemon 程序時(shí),也要添加對(duì)應(yīng)的參數(shù),比如:
nodemon --debug server/app.js nodemon --inspect server/app.js詳細(xì)的例子同樣可以在 zry656565/vscode-debug-sample 中找到。
參考資料
VS Code - Debugger for Chrome - README
Debugging in VS Code
Chrome DevTools Protocol Viewer
bdspen/nodemon_vscode
Node.js Debugging in VS Code
總結(jié)
以上是生活随笔為你收集整理的Visual Studio Code 前端调试不完全指南的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3d 根据弧长算角度_三分钟带你了解三姆
- 下一篇: np读取csv文件_pandas.rea