利用webstorm調(diào)試(debug)JavaScript應(yīng)用(異步調(diào)用調(diào)試教學(xué))

調(diào)試應(yīng)用之前,首先分清楚兩點:

一涝涤、調(diào)試node.js應(yīng)用

二、調(diào)試瀏覽器應(yīng)用


上述兩種調(diào)試基本上常見有:

  • 基于webpack打包的前端各種APP應(yīng)用岛杀,
  • 基于gulp等等各種打包完應(yīng)用

他們的基本運(yùn)作原理是:

利用node.js引擎運(yùn)行打包工具阔拳,打包你正在開發(fā)的項目,然后創(chuàng)建一個服務(wù)器类嗤,來響應(yīng)你當(dāng)前打包好的應(yīng)用資源糊肠。

就本質(zhì)上來說辨宠,和打包出幾個靜態(tài)資源,然后丟到nginx中做反向代理是一樣的

所以我們一定要明白货裹,如果是此時嗤形,你的調(diào)試的目標(biāo)是什么?

  • node.js服務(wù)器
  • 前端應(yīng)用

答案是: 瀏覽器的前端應(yīng)用弧圆。

那么我們知道了目標(biāo)派殷,其實你可以直接在瀏覽器打斷點了,但是又因為webpack的混淆機(jī)制以及各種各樣的tree shaking,往往你不能夠直接的訪問到你想要打斷點的位置墓阀。
但是我們可以利用source-map機(jī)制來處理毡惜,或者直接連接chrome的JavaScript內(nèi)核引擎來斷點。
webstorm就是如此

我們在 run/Debug configurations 中配置好項目的參數(shù)

  • Name 你的配置名稱(這里我默認(rèn)起名字為localhost:8080,當(dāng)然你可以隨便起一個名字即可)
  • URL 你的調(diào)試URL地址斯撮,調(diào)試URL配置完成后會自動打開當(dāng)前地址经伙,并連接打開的瀏覽器的內(nèi)核去調(diào)試。
  • Browser: 選擇瀏覽器勿锅,在這里我選擇了chrome瀏覽器來調(diào)試帕膜。
  • [復(fù)選框]Ensure breakpoints are detected when loading scripts 確保在加載JavaScript的時候自動暫停在你的斷點處,會影響性能溢十。
  • Remote URLs of local files(optional) 遠(yuǎn)程URL映射你本地文件的位置(在這里我配置了所有文件垮刹,所以任何一個JS應(yīng)該都可以打斷點了)
配置斷點調(diào)試
  • before launch:Activate tool window 在啟動之前做哪些任務(wù)(在這里我沒有什么需要處理的,就沒有配置)张弛,你也可以在這里配置 npm命令荒典,webstorm會在npm運(yùn)行成功后,再開始運(yùn)行你的命令吞鸭。


    啟動前任務(wù)

說完了調(diào)試前端應(yīng)用寺董,我們說一下調(diào)試node.js應(yīng)用

node.js調(diào)試應(yīng)用 往往跟隨者打包程序 webpack以及服務(wù)端框架
服務(wù)端框架包括:

  • express
  • koa
  • egg
    等等,每一個服務(wù)端框架都有完整的IDE調(diào)試解決方案刻剥,你可以參考官網(wǎng)來實現(xiàn)遮咖。
  1. egg調(diào)試解決方案

最后補(bǔ)充一個webstorm調(diào)試異步方法的小技巧

官網(wǎng)截圖

翻譯:
webstorm 支持調(diào)試異步客戶端程序上的JavaScript代碼。在webstorm上面為異步程序打斷點造虏,停在異步代碼上御吞,斷點馬上就會擊中你的異步程序,從而跳進(jìn)異步方法漓藕。而一個新的調(diào)用棧也會建立在 Frames面板上陶珠。webstorm顯示全部的調(diào)用棧,包括了最開始調(diào)用異步程序的調(diào)用棧撵术。

這張圖片展示了一個異步程序如何調(diào)試斷點背率。
【【圖】】
斷點停留在了第三行话瞧,然后會在第五行停留嫩与,在第五行停留的時候寝姿,點擊step into,斷點就會停留在第五行(隨即就會立刻進(jìn)入第六行划滋,你的異步調(diào)用棧)

這種異步調(diào)用默認(rèn)就會觸發(fā)饵筑,如果你不想要觸發(fā)異步回調(diào)方法,你可以在Registry中設(shè)置 js.debugger.async.call.stack.depth 值為0

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末处坪,一起剝皮案震驚了整個濱河市根资,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌同窘,老刑警劉巖玄帕,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異想邦,居然都是意外死亡裤纹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門丧没,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鹰椒,“玉大人,你說我怎么就攤上這事呕童∑峒剩” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵夺饲,是天一觀的道長奸汇。 經(jīng)常有香客問我,道長往声,這世上最難降的妖魔是什么茫蛹? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮烁挟,結(jié)果婚禮上婴洼,老公的妹妹穿的比我還像新娘。我一直安慰自己撼嗓,他們只是感情好柬采,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著且警,像睡著了一般粉捻。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斑芜,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天肩刃,我揣著相機(jī)與錄音,去河邊找鬼。 笑死盈包,一個胖子當(dāng)著我的面吹牛沸呐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播呢燥,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼崭添,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了叛氨?” 一聲冷哼從身側(cè)響起呼渣,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎寞埠,沒想到半個月后屁置,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡仁连,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年缰犁,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片怖糊。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡帅容,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出伍伤,到底是詐尸還是另有隱情并徘,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布扰魂,位于F島的核電站麦乞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏劝评。R本人自食惡果不足惜姐直,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蒋畜。 院中可真熱鬧声畏,春花似錦、人聲如沸姻成。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽科展。三九已至均牢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間才睹,已是汗流浹背徘跪。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工甘邀, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人垮庐。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓松邪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親突硝。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容