處理node在自動(dòng)構(gòu)建過(guò)程中的異常

部署項(xiàng)目可以分為構(gòu)建舌厨、發(fā)布兩個(gè)步驟缀踪。構(gòu)建過(guò)程打包源代碼,生成最終運(yùn)行的文件腾务,發(fā)布過(guò)程使用打包后的文件更新線上程序毕骡。有時(shí)我們會(huì)在構(gòu)建過(guò)程中使用nodejs來(lái)處理一些工作,比如源代碼的打包岩瘦、上傳靜態(tài)資源至CDN等未巫。如果這些過(guò)程發(fā)生了錯(cuò)誤,應(yīng)該立即終止部署流程启昧,避免線上事故叙凡。

如何終止部署流程?

一般一個(gè)部署流程是一段 linux shell密末∥找可以在shell中通過(guò)&& 操作符依次執(zhí)行命令跛璧。如果其中某個(gè)進(jìn)程錯(cuò)誤退出,shell 將不會(huì)繼續(xù)執(zhí)行新啼。
比如:

echo msg1 && echo msg2 && aErrorCmd && echo msg3;

上述命令依次執(zhí)行 echo msg1, echo msg2, aErrorCmd, echo msg3 4個(gè)命令追城。執(zhí)行到aErrorCmd處,程序錯(cuò)誤退出燥撞。第四個(gè)命令echo msg3將不會(huì)執(zhí)行座柱。

執(zhí)行結(jié)果

如何查看進(jìn)程是否錯(cuò)誤退出?

可以通過(guò)查看進(jìn)程的退出狀態(tài)碼來(lái)確定進(jìn)程是否錯(cuò)誤退出物舒。如果進(jìn)程的退出狀態(tài)碼為0色洞,表示進(jìn)程正常退出。否則表示進(jìn)程錯(cuò)誤退出冠胯。進(jìn)程結(jié)束后火诸,可以通過(guò)$?查看進(jìn)程的退出狀態(tài)碼。

比如:

echo msg1;echo $?;

echo msg1命令正常退出荠察,$?的值為0惭蹂。

aErrorCmd;echo $?;

aErrorCmd命令錯(cuò)誤退出,$?的值不為0割粮。

執(zhí)行結(jié)果

如何錯(cuò)誤退出nodejs進(jìn)程?

在nodejs中可以通過(guò)拋出異常的方法使進(jìn)程錯(cuò)誤退出媚污。

// index.js
throw new Error('錯(cuò)誤')
# shell
node index;echo $?;
運(yùn)行結(jié)果

進(jìn)程的退出狀態(tài)碼為 1 舀瓢。

但是,在promise的回調(diào)中拋出異常耗美,程序仍正常退出京髓。

// index.js
Promise.resolve().then(() => {
    throw new Error('錯(cuò)誤')
})
# shell
node index;echo $?;
運(yùn)行結(jié)果

進(jìn)程的退出狀態(tài)碼為 0 。

那么如何在promise回調(diào)中異常退出進(jìn)程呢商架?可以在nodejs中調(diào)用process.exit(1)堰怨。

Promise.resolve().then(() => {
    process.exit(1)
})
# shell
node index;echo $?;
執(zhí)行結(jié)果

進(jìn)程的退出狀態(tài)碼為 1 。

如何在webpack打包錯(cuò)誤后錯(cuò)誤退出蛇摸?

const webpack = require('webpack')
const webpackConfig = require('./webpack.prod.conf')



webpack(webpackConfig, function (err, stats) {
    if (err) throw err

    process.stdout.write(stats.toString({
        colors: true,
        modules: false,
        children: false,
        chunks: false,
        chunkModules: false
    }) + '\n')

    if (stats.hasErrors()) {
        process.exit(1)
    }
    
})


打包后备图,通過(guò)回調(diào)參數(shù)statshasErrors方法判斷webpack是否成功打包。如何含有打包錯(cuò)誤赶袄,程序異常退出揽涮。webpack文檔參考

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市饿肺,隨后出現(xiàn)的幾起案子蒋困,更是在濱河造成了極大的恐慌,老刑警劉巖敬辣,帶你破解...
    沈念sama閱讀 216,470評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雪标,死亡現(xiàn)場(chǎng)離奇詭異零院,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)村刨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門(mén)告抄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人烹困,你說(shuō)我怎么就攤上這事玄妈。” “怎么了髓梅?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,577評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵拟蜻,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我枯饿,道長(zhǎng)酝锅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,176評(píng)論 1 292
  • 正文 為了忘掉前任奢方,我火速辦了婚禮搔扁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蟋字。我一直安慰自己稿蹲,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,189評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布鹊奖。 她就那樣靜靜地躺著苛聘,像睡著了一般。 火紅的嫁衣襯著肌膚如雪忠聚。 梳的紋絲不亂的頭發(fā)上设哗,一...
    開(kāi)封第一講書(shū)人閱讀 51,155評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音两蟀,去河邊找鬼网梢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赂毯,可吹牛的內(nèi)容都是我干的战虏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼欢瞪,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼活烙!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起遣鼓,我...
    開(kāi)封第一講書(shū)人閱讀 38,903評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤啸盏,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后骑祟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體回懦,經(jīng)...
    沈念sama閱讀 45,319評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡气笙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,539評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怯晕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潜圃。...
    茶點(diǎn)故事閱讀 39,703評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖舟茶,靈堂內(nèi)的尸體忽然破棺而出谭期,到底是詐尸還是另有隱情,我是刑警寧澤吧凉,帶...
    沈念sama閱讀 35,417評(píng)論 5 343
  • 正文 年R本政府宣布隧出,位于F島的核電站,受9級(jí)特大地震影響阀捅,放射性物質(zhì)發(fā)生泄漏胀瞪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,013評(píng)論 3 325
  • 文/蒙蒙 一饲鄙、第九天 我趴在偏房一處隱蔽的房頂上張望凄诞。 院中可真熱鬧,春花似錦忍级、人聲如沸帆谍。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,664評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)既忆。三九已至,卻和暖如春嗦玖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背跃脊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,818評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工宇挫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酪术。 一個(gè)月前我還...
    沈念sama閱讀 47,711評(píng)論 2 368
  • 正文 我出身青樓器瘪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绘雁。 傳聞我的和親對(duì)象是個(gè)殘疾皇子橡疼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,601評(píng)論 2 353

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

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,380評(píng)論 0 5
  • 個(gè)人學(xué)習(xí)批處理的初衷來(lái)源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求庐舟,從而在測(cè)試過(guò)程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,717評(píng)論 0 11
  • 一欣除、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 5,744評(píng)論 0 10
  • 第 2 章 SHELL 基礎(chǔ)知識(shí)2.1 shell腳本我們?cè)谏厦婧?jiǎn)單介紹了一下什么是shell腳本,現(xiàn)在我們來(lái)進(jìn)一...
    LiWei_9e4b閱讀 1,569評(píng)論 0 0
  • 什么是運(yùn)維 術(shù)語(yǔ)名詞 IDC--(Internet Data Center)互聯(lián)網(wǎng)數(shù)據(jù)中心滔岳,主要服務(wù)包括整機(jī)租用、...
    lyh165閱讀 2,701評(píng)論 0 19