ios 构建版本一直在处理中_处理node在自动构建过程中的异常

61dca9269c4ef30d4a7689870ca9af40.png

部署项目可以分为构建、发布两个步骤。构建过程打包源代码,生成最终运行的文件,发布过程使用打包后的文件更新线上程序。有时我们会在构建过程中使用nodejs来处理一些工作,比如源代码的打包、上传静态资源至CDN等。如果这些过程发生了错误,应该立即终止部署流程,避免线上事故。

如何终止部署流程?

一般一个部署流程是一段 linux shell。可以在shell中通过&& 操作符依次执行命令。如果其中某个进程错误退出,shell 将不会继续执行。

比如:

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

上述命令依次执行 echo msg1, echo msg2, aErrorCmd, echo msg3 4个命令。执行到aErrorCmd处,程序错误退出。第四个命令echo msg3将不会执行。

2817ef2544e6332438dc106ff6a8ae72.png

如何查看进程是否错误退出?

可以通过查看进程的退出状态码来确定进程是否错误退出。如果进程的退出状态码为0,表示进程正常退出。否则表示进程错误退出。进程结束后,可以通过$?查看进程的退出状态码。

比如:

echo msg1;echo $?;

echo msg1命令正常退出,$?的值为0。

aErrorCmd;echo $?;

aErrorCmd命令错误退出,$?的值不为0。

3d3b530f557692d06d7c05e3d51f7b5c.png

如何错误退出nodejs进程?

在nodejs中可以通过抛出异常的方法使进程错误退出。

// index.jsthrow new Error('错误')# shellnode index;echo $?;
fc9ae83f4deff3386be645a854e33de9.png

进程的退出状态码为 1 。

但是,在promise的回调中抛出异常,程序仍正常退出。

// index.jsPromise.resolve().then(() => { throw new Error('错误')})# shellnode index;echo $?;
731a439f3cc2c74a81d43a90aea037f7.png

进程的退出状态码为 0 。

那么如何在promise回调中异常退出进程呢?可以在nodejs中调用process.exit(1)。

Promise.resolve().then(() => { process.exit(1)})# shellnode index;echo $?;
b49ff13a7f68375fdddb412bafa81f32.png

进程的退出状态码为 1 。

如何在webpack打包错误后错误退出?

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 }) + '') if (stats.hasErrors()) { process.exit(1) } })

打包后,通过回调参数stats的hasErrors方法判断webpack是否成功打包。如果含有打包错误,程序异常退出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值