美文网首页技术干货
处理node在自动构建过程中的异常

处理node在自动构建过程中的异常

作者: wuww | 来源:发表于2019-06-05 01:35 被阅读3次

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

如何终止部署流程?

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

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

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

执行结果

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

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

比如:

echo msg1;echo $?;

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

aErrorCmd;echo $?;

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

执行结果

如何错误退出nodejs进程?

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

// index.js
throw new Error('错误')
# shell
node index;echo $?;
运行结果

进程的退出状态码为 1 。

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

// index.js
Promise.resolve().then(() => {
    throw new Error('错误')
})
# shell
node index;echo $?;
运行结果

进程的退出状态码为 0 。

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

Promise.resolve().then(() => {
    process.exit(1)
})
# shell
node index;echo $?;
执行结果

进程的退出状态码为 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
    }) + '\n')

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


打包后,通过回调参数statshasErrors方法判断webpack是否成功打包。如何含有打包错误,程序异常退出。webpack文档参考

相关文章

  • 处理node在自动构建过程中的异常

    部署项目可以分为构建、发布两个步骤。构建过程打包源代码,生成最终运行的文件,发布过程使用打包后的文件更新线上程序。...

  • Gulp

    gulp: 是一个自动化构建工具, 开发者可以使用它在项目开发过程中自动执行常见任务, 是基于node.js构建的...

  • Gulp-前端自动化构建工具

    gulp基于node,自动化构建工具增强前端开发工作流程一些常见的、重复的任务,例如:网页自动刷新、css预处理、...

  • 配置Gulp

    使用工具 Gulp说明 Gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器,基于node.js,...

  • 异常处理设计文档

    一、异常处理流程说明 在ESB处理过程中,若发生异常,将进入异常流程的处理。一个异常处理流程大致如下: ESB处理...

  • 异常处理器

    springmvc在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻...

  • SpringMVC异常处理器

    SpringMVC在处理请求过程中出现异常信息交由异常处理器进行处理,自定义异常处理器可以实现一个系统的异常处理逻...

  • NDK开发---C++学习(七):异常

    前言 C++的异常处理机制能够将异常检测与异常处理分离开来,当异常发生时,它能自动调用异常处理程序进行错误处理。把...

  • Java异常处理

    简介 何为异常处理 在计算机科学中,异常处理(Exception Handling)指的是在计算过程中对异常情况做...

  • gulp

    1 gulp(自动化构建工具) 自动化构建 自动化构建:优化网站,提升网站性能,提高网站的代码,文件的优化处理 处...

网友评论

    本文标题:处理node在自动构建过程中的异常

    本文链接:https://www.haomeiwen.com/subject/gjmdxctx.html