vscode調(diào)試node.js的實(shí)現(xiàn)方法
在開(kāi)發(fā)的過(guò)程中,幾乎不可能一次性就能寫(xiě)出毫無(wú)破綻的程序,斷點(diǎn)調(diào)試代碼是一個(gè)普遍的需求。
作為前端開(kāi)發(fā)工程師,以往我們開(kāi)發(fā)的JavaScript程序都運(yùn)行在瀏覽器端,利用Chrome提供的開(kāi)發(fā)者工具就可以方便的進(jìn)行源碼斷點(diǎn)調(diào)試。其步驟有四,詳情不表,粗略概括如下:
打開(kāi)Chrome開(kāi)發(fā)者工具;點(diǎn)擊進(jìn)入Sources標(biāo)簽頁(yè),在頁(yè)面的左側(cè)就能看到JS代碼的目錄;找到需要設(shè)置斷點(diǎn)的源文件,在需要中斷的哪行代碼左側(cè)單擊鼠標(biāo)左鍵,就可以設(shè)置斷點(diǎn),如果你的代碼是uglify過(guò)的,則需導(dǎo)入相應(yīng)的source-map來(lái)映射源碼。刷新頁(yè)面(如果設(shè)置斷點(diǎn)的位置是一個(gè)事件處理函數(shù),則直接觸發(fā)這個(gè)事件即可),代碼運(yùn)行到斷點(diǎn)處的時(shí)候,程序就會(huì)掛起,這時(shí)候用鼠標(biāo)hover就可以查看當(dāng)前各個(gè)變量的數(shù)值,并以此判斷程序是否正常運(yùn)行了。
但是,當(dāng)我們用JavaScript開(kāi)發(fā)運(yùn)行在服務(wù)端的Node.js程序時(shí),Chrome開(kāi)發(fā)者工具暫時(shí)派不上用場(chǎng)了。雖然也有辦法實(shí)現(xiàn)在Chrome上調(diào)試,不過(guò)這不是今天我們討論的范圍。
還有,說(shuō)用console.log的那位同學(xué),請(qǐng)你先不要說(shuō)話…
實(shí)際上,許多IDE都集成了Debug的功能,包括較新版本的WebStorm就對(duì)Node.js調(diào)試支持得很好。
但是很多開(kāi)發(fā)人員會(huì)覺(jué)得IDE太重,有沒(méi)有更輕量級(jí)一些的工具來(lái)實(shí)現(xiàn)斷點(diǎn)調(diào)試呢?今天就要給大家安利一下在VScode上進(jìn)行斷點(diǎn)調(diào)試的方法。
VScode除了out-of-box支持JavaScript和TypeScript,還支持Node.js調(diào)試,簡(jiǎn)直就是為前端工程師而生的,對(duì)不對(duì)…
要調(diào)試Node.js的前提是,你的電腦上已經(jīng)安裝了Node.js的環(huán)境。
什么?怎么安裝Node.js?給你一點(diǎn)小提示:打開(kāi)百度,搜索【安裝Node.js】,好了,不能提示更多了。
本文以調(diào)試express應(yīng)用為例,并假設(shè)您已經(jīng)安裝好了Node.js運(yùn)行環(huán)境。
創(chuàng)建express應(yīng)用
我們使用express-generator創(chuàng)建一個(gè)新的express應(yīng)用。
1.在全局安裝express-generator
a.打開(kāi)終端,輸入: npm install express-generator -g
MacBook用戶全局安裝的時(shí)候記得在前面加上sudo
b.安裝完成之后,在終端輸入 express -v
如果看到下圖所示的信息,說(shuō)明已經(jīng)安裝成功了。
2.生成express應(yīng)用目錄,假設(shè)這個(gè)應(yīng)用的名稱為myapp 在終端輸入 express myapp
在當(dāng)前目錄就生成了一個(gè)myapp目錄,目錄結(jié)構(gòu)如下:
可以看到,這個(gè)小應(yīng)用已經(jīng)五臟俱全,有Node服務(wù)器配置,公共資源文件夾,師徒文件夾,以及路由配置。
3.運(yùn)行express應(yīng)用
a.在終端中輸入指令
cd myapp && npm install
就可以進(jìn)入項(xiàng)目目錄并安裝所有依賴,這一步可能需要比較長(zhǎng)的時(shí)間,耐心等待安裝完成。
b.然后輸入指令
npm start
就可以啟動(dòng)應(yīng)用。
這時(shí)我們?cè)跒g覽器中訪問(wèn)localhost:3000,即可看到如下頁(yè)面:
這就說(shuō)明express應(yīng)用可以正常運(yùn)行,接下來(lái)我們就可以使用VScode調(diào)試代碼了。
提示:為了避免調(diào)試時(shí)的端口沖突,我們先回到剛剛運(yùn)行express應(yīng)用的終端,ctrl+c關(guān)閉正在運(yùn)行的express應(yīng)用。
調(diào)試express應(yīng)用
1.進(jìn)入VScode界面,點(diǎn)擊界面左邊的第四個(gè)類(lèi)似蟲(chóng)子的按鈕,進(jìn)入調(diào)試界面:
2.點(diǎn)擊頁(yè)面上方“沒(méi)有配置”下拉菜單,選擇“添加配置”。
3.選擇Node.js環(huán)境。
4.選擇完成之后,在項(xiàng)目的根目錄中會(huì)生成一個(gè).vscode的目錄,這個(gè)目錄中存放了各種各樣的VScode編輯器的配置。現(xiàn)在這個(gè)目錄中就包含了一個(gè)文件名為lanuch.json的配置文件,配置文件的內(nèi)容如下:
其中最重要的配置項(xiàng)就是“Program”字段,這個(gè)字段定義了整個(gè)應(yīng)用的入口,開(kāi)啟調(diào)試器的時(shí)候會(huì)從這個(gè)入口啟動(dòng)應(yīng)用。
我們發(fā)現(xiàn)當(dāng)前這個(gè)字段已經(jīng)有值了,不要慌,那是因?yàn)閂Scode在初始化這個(gè)配置文件的時(shí)候,會(huì)查看package.json中是否有包含了鍵名為start的scripts,如果有的話,就會(huì)把start配置的內(nèi)容作為“program”字段的值。
5.點(diǎn)擊開(kāi)始調(diào)試按鈕(綠色三角形),就可以開(kāi)始調(diào)試。這時(shí)界面上方就會(huì)出現(xiàn)一個(gè)調(diào)試控制的面板,頁(yè)面右下方會(huì)出現(xiàn)一個(gè)調(diào)試控制臺(tái),可以查看你輸出的信息,在界面下放會(huì)出現(xiàn)一個(gè)狀態(tài)欄,當(dāng)前的橘黃色表示應(yīng)用在正常運(yùn)行,如下圖所示:
6.我們?cè)俅卧跒g覽中訪問(wèn)localhost:3000,會(huì)發(fā)現(xiàn)頁(yè)面可以打開(kāi),應(yīng)用已經(jīng)正常啟動(dòng)了。
7.接下來(lái)我們開(kāi)始給應(yīng)用設(shè)置斷點(diǎn)。我們打開(kāi)myapp/routes/index.js文件,這個(gè)文件配置了應(yīng)用根路徑的路由,當(dāng)前的處理是返回一個(gè)頁(yè)面,傳入字符串"Express"作為視圖的參數(shù)。
8.我們用鼠標(biāo)在行號(hào)6的左邊單擊左鍵,就可以設(shè)置一個(gè)斷點(diǎn)。注意,添加斷點(diǎn)之前要先關(guān)閉調(diào)試,關(guān)閉的方法是點(diǎn)擊界面上方的調(diào)試控制面板中的停止按鈕(紅色正方形)。
9.設(shè)置完斷點(diǎn)之后,重新啟動(dòng)調(diào)試,然后在瀏覽器中訪問(wèn)localhost:3000,這時(shí)候,斷點(diǎn)的形狀發(fā)生了變化,程序停留在了斷點(diǎn),調(diào)試控制面板的按鈕也發(fā)生了變化,從左到右依次是單步跳過(guò),單步調(diào)試,單步跳出,重啟,停止調(diào)試。這幾個(gè)都是常見(jiàn)的斷點(diǎn)調(diào)試指令。設(shè)置完斷點(diǎn)之后,重新啟動(dòng)調(diào)試,然后在瀏覽器中訪問(wèn)localhost:3000,這時(shí)候,斷點(diǎn)的形狀發(fā)生了變化,程序停留在了斷點(diǎn),調(diào)試控制面板的按鈕也發(fā)生了變化,從左到右依次是單步跳過(guò),單步調(diào)試,單步跳出,重啟,停止調(diào)試。這幾個(gè)都是常見(jiàn)的斷點(diǎn)調(diào)試指令。
10.在界面的左邊,可以查看當(dāng)前上下文環(huán)境,也可以設(shè)置變量監(jiān)聽(tīng)。
11.將鼠標(biāo)防止在斷點(diǎn)前的變量或者參數(shù)上,也可以查看該變量當(dāng)前的數(shù)值,體驗(yàn)與Chrome開(kāi)發(fā)者工具的調(diào)試一致。
到此這篇關(guān)于vscode調(diào)試node.js的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)vscode調(diào)試node.js內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
node.js實(shí)現(xiàn)帶進(jìn)度條的多文件上傳
這篇文章主要為大家詳細(xì)介紹了node.js實(shí)現(xiàn)攜帶進(jìn)度條的多文件上傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08node.js事件循環(huán)機(jī)制及與js區(qū)別詳解
這篇文章主要為大家介紹了node.js事件循環(huán)機(jī)制及與js區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09node.JS事件機(jī)制與events事件模塊的使用方法詳解
本文將詳細(xì)介紹nodeJS事件機(jī)制與events事件模塊的使用方2020-02-02詳解node登錄接口之密碼錯(cuò)誤限制次數(shù)(含代碼)
這篇文章主要介紹了nodejs登錄接口之密碼錯(cuò)誤限制次數(shù)(含代碼),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10