摘要:支持,和三種環(huán)境,并且可以安裝擴(kuò)展插件,因而可以滿足絕大多數(shù)人的要求,安裝配置非本文所要講述的內(nèi)容,請(qǐng)自行查找,本文著重討論如何用更好的調(diào)試代碼,希望能對(duì)大家有所幫助。
2018.5.12更新
最近在用vscode 1.23版本的時(shí)候發(fā)現(xiàn)outDir不可以使用了,建議這么改吧,直接program采用編譯后的文件,然后打開(kāi)sourceMaps,同時(shí)在babel編譯的時(shí)候自己搞--watch及時(shí)生成.map文件便于vscode索引;如果你要編譯其他語(yǔ)言,其實(shí)可以在package.json當(dāng)中添加scripts,通過(guò)tasks.json來(lái)在debug之前進(jìn)行編譯,下面展示出.vscode下的兩個(gè)文件,此為babel方法,其他類(lèi)似
.launch.json
"configurations": [ { "type": "node", "request": "launch", "name": "啟動(dòng)程序", "program": "${workspaceFolder}/lib/login.js", "sourceMaps": true, "preLaunchTask": "build" // 等于下面`label`值 } ]
tasks.json
{ "version": "2.0.0", "command": "npm", "tasks": [ { "label": "build", // 合起來(lái)就是`npm run build` "type": "npm", "script": "build" } ] }
package.json
"scripts": { "build": "babel src --out-dir lib --source-maps" },
實(shí)際上這樣較慢,建議多帶帶在build加watch,然后直接不用preLaunchTask
前言之前一直習(xí)慣了用瀏覽器來(lái)調(diào)試代碼,偶爾想調(diào)試一下node包中的代碼,或者自己想寫(xiě)一個(gè)小的node插件無(wú)從下手,不知道該怎么調(diào)試,經(jīng)過(guò)查找資料和向?qū)熣?qǐng)教實(shí)踐了一下這個(gè)過(guò)程
1. vscode概述Visual Studio Code(以下簡(jiǎn)稱vscode)是一個(gè)很強(qiáng)大的編輯器,相對(duì)而言比較輕量,因?yàn)槲彝ǔO矚gwebstorm,webstorm自動(dòng)保存和錯(cuò)誤提示的特性深受我喜愛(ài),但是對(duì)于調(diào)試nodejs來(lái)說(shuō),vscode則更具有它的優(yōu)勢(shì)所在。vscode支持windows,OS X和Linux三種環(huán)境,并且可以安裝擴(kuò)展插件,因而可以滿足絕大多數(shù)人的要求,安裝配置非本文所要講述的內(nèi)容,請(qǐng)自行查找,本文著重討論如何用vscode更好的調(diào)試node代碼,希望能對(duì)大家有所幫助。
2. vscode界面
左上角依次是項(xiàng)目目錄,搜索,版本管理git相關(guān)(左下角為當(dāng)前分支),調(diào)試,其他擴(kuò)展插件 ,其他的均為中文標(biāo)注,不解釋?zhuān)际窃蹅儽匾?,這幾個(gè)如果沒(méi)有的建議調(diào)出來(lái)這都是調(diào)試很必要的幾個(gè)東西,可以去到菜單欄的查看中逐一調(diào)出
點(diǎn)擊圖中左數(shù)第四個(gè)按鈕,也就是調(diào)試,然后點(diǎn)擊圖中紅框即可打開(kāi)launch.json
"configurations": [ { "type": "node", "request": "launch", "name": "Launch Program", "program": "${workspaceFolder}/src/extract-cli.js", "args": ["--output", "output.pot", "${workspaceFolder}/test/product_group.vm"], "outDir": "${workspaceFolder}/dist", "sourceMaps": true } ]
type和request不用改,默認(rèn)就可以,request為launch時(shí)用F5直接可以啟動(dòng)調(diào)試,request為attach按照官網(wǎng)解釋是關(guān)聯(lián)到已經(jīng)運(yùn)行的一個(gè)程序,但是此處可以不管,我們就用vscode自帶的調(diào)試器進(jìn)行調(diào)試就好。
program這個(gè)參數(shù)是指定要運(yùn)行的js入口文件,其中${workspaceFolder}為當(dāng)前打開(kāi)的項(xiàng)目目錄,.vscode目錄會(huì)自動(dòng)生成在此目錄下,launch.json也在此目錄下
args也是個(gè)比較重要的,比如該例,我執(zhí)行命令gettext-extract --output output.pot input.vm 那么args的作用其實(shí)就是傳入命令后面的參數(shù),每個(gè)空格之間要分開(kāi),寫(xiě)成args的某個(gè)子元素
sourceMaps對(duì)于編寫(xiě)es5代碼來(lái)說(shuō)這個(gè)參數(shù)沒(méi)有什么卵用,但是對(duì)于寫(xiě)es6,TypeScript等就十分有必要了,這個(gè)參數(shù)的值為true時(shí)會(huì)利用編譯過(guò)程生成的map來(lái)進(jìn)行源碼和編譯后的代碼進(jìn)行對(duì)應(yīng),這樣在源碼打斷點(diǎn),就可以愉快的進(jìn)行我們的調(diào)試了
outDir是用來(lái)標(biāo)注編譯后代碼的生成目錄的,幫助vscode進(jìn)行查找
下面討論下關(guān)于編譯前后的對(duì)應(yīng)關(guān)系這件事
我這邊是用的babel來(lái)進(jìn)行編譯的,經(jīng)過(guò)嘗試,program參數(shù)如果直接指向編譯后的文件,vscode奇跡般的可以自己去尋找到源碼文件,這對(duì)于我們的調(diào)試是最簡(jiǎn)單的方式了
如果program指向你編寫(xiě)的文件,那么需要提供一個(gè)outDir參數(shù),只要配置到編譯生成目錄就好了。
其他:目測(cè)不需要sourceMaps還有編譯成成.js.map如果你調(diào)試遇到了問(wèn)題請(qǐng)嘗試將sourceMaps設(shè)置為true并讓編譯工具生成map文件
4. 調(diào)試代碼只要在你調(diào)試的代碼左邊點(diǎn)擊一下,只要是紅色的,說(shuō)明此處斷點(diǎn)可行,如圖所示
直接按F5即可開(kāi)始調(diào)試,會(huì)在界面上出現(xiàn)類(lèi)似于chrome的那幾個(gè)單步跳過(guò),單步調(diào)試等等,使用方法類(lèi)似chrome,只是快捷鍵稍有不同
然后點(diǎn)擊左側(cè)上面介紹的調(diào)試按鈕,會(huì)看到運(yùn)行到某一步的變量,還有調(diào)用堆棧情況,如圖所示
捎帶介紹一下本文使用的babel和命令行入口相關(guān)的知識(shí)
打開(kāi)package.json,會(huì)發(fā)現(xiàn)有一個(gè)bin的配置,這么配置再npm install的時(shí)候就會(huì)將這兩個(gè)命令加入到node_modules/.bin當(dāng)中,然后就可以用做命令行了
"bin": { "gettext-compile": "./dist/compile-cli.js", "gettext-extract": "./dist/extract-cli.js" }
babel執(zhí)行命令時(shí)可以加--source-maps true來(lái)生成map文件,如果遇到我上面說(shuō)到問(wèn)題的才會(huì)用到這個(gè),估計(jì)其他的編譯工具也會(huì)有;另外,我們修改源文件之后,想立即重啟調(diào)試來(lái)進(jìn)行驗(yàn)證,每次都自己執(zhí)行命令很麻煩,那么babel自身支持--watch參數(shù),可以監(jiān)控文件變化,這樣我們就可以實(shí)現(xiàn)簡(jiǎn)單的自動(dòng)化
babel或者其他的命令行命令寫(xiě)的很長(zhǎng),不容易記住,那么我們就可以將其寫(xiě)在package.json當(dāng)中,如下就是講babel編譯寫(xiě)在其中,可以執(zhí)行npm run prepublish即可
"scripts": { "prepublish": "babel --watch --presets es2015 --plugins transform-object-assign --source-maps true src --out-dir dist/" }
參考資料:
官網(wǎng)提示文檔
[譯]Visual Studio Code文檔其4—調(diào)試
采用easygettext源碼來(lái)進(jìn)行講解的
babel --help的幫助
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/89887.html
摘要:為目前使用范圍最廣的網(wǎng)絡(luò)保護(hù)協(xié)議。身處攻擊目標(biāo)周邊的惡意人士能夠利用密鑰重裝攻擊,利用此類(lèi)安全漏洞。本文和大家一起探討下如何在三年內(nèi)快速成長(zhǎng)為一名技術(shù)專(zhuān)家。 業(yè)界動(dòng)態(tài) Vue 2.5 released Vue 2.5 正式發(fā)布,作者對(duì)于該版本的優(yōu)化總結(jié):更好的TypeScript 集成,更好的錯(cuò)誤處理,更好的單文件功能組件支持以及更好的與環(huán)境無(wú)關(guān)的SSR WiFi爆驚天漏洞!KRACK...
摘要:引言本期精讀的文章是如何在使用環(huán)境變量。介紹了開(kāi)發(fā)與生產(chǎn)環(huán)境如何管理環(huán)境變量。本地通過(guò)調(diào)試環(huán)境變量既方便又安全。更多討論討論地址是精讀如何在使用環(huán)境變量如果你想?yún)⑴c討論,請(qǐng)點(diǎn)擊這里,每周都有新的主題,周末或周一發(fā)布。 1 引言 本期精讀的文章是:如何在 nodejs 使用環(huán)境變量。 介紹了開(kāi)發(fā)與生產(chǎn)環(huán)境如何管理環(huán)境變量。 這里環(huán)境變量指的是數(shù)據(jù)庫(kù)密碼等重要數(shù)據(jù),而不是指普通變量傳參。 ...
摘要:原文地址這兩天在看也在入門(mén)中網(wǎng)上大部分教程都是前端配置開(kāi)發(fā)調(diào)試這個(gè)也有很多相當(dāng)成熟的實(shí)踐教程這篇文章主要是的配置說(shuō)起來(lái)也是相當(dāng)簡(jiǎn)單的不涉及任何的語(yǔ)法與概念同時(shí)也可以根據(jù)本文配置的開(kāi)發(fā)環(huán)境主要是模塊部分的使用說(shuō)起大家應(yīng)該都挺熟悉了是一個(gè) 原文地址 https://github.com/xiadd/blog/issues/8 這兩天在看ts,也在入門(mén)中, 網(wǎng)上大部分教程都是前端配置ts開(kāi)發(fā)...
摘要:類(lèi)似的,如果我們想要調(diào)試擴(kuò)展,我們也需要擴(kuò)展源文件的調(diào)試符號(hào)信息。配置安裝插件這里我們將用來(lái)調(diào)試擴(kuò)展。配置輸入配置一個(gè)任務(wù),該任務(wù)會(huì)執(zhí)行,生成帶調(diào)試信息的擴(kuò)展文件。 Debugging NodeJS C++ addons using VS Code 之前筆者寫(xiě)了一篇 用NAN寫(xiě)一個(gè)nodejs的c++擴(kuò)展, 實(shí)際開(kāi)發(fā)過(guò)程中,肯定是有單步調(diào)試的需求。這里簡(jiǎn)單介紹用如何用vscode調(diào)試...
閱讀 3332·2021-09-30 09:54
閱讀 3839·2021-09-22 15:01
閱讀 3140·2021-08-27 16:19
閱讀 2599·2019-08-29 18:39
閱讀 2219·2019-08-29 14:09
閱讀 650·2019-08-26 10:23
閱讀 1365·2019-08-23 12:01
閱讀 1909·2019-08-22 13:57