【问题标题】:nodejs failed but bash doesn't stop even I have set -enodejs 失败但即使我设置了 -e bash 也不会停止
【发布时间】:2020-10-03 02:17:48
【问题描述】:

我在 nodejs 中运行一个脚本,该脚本由 Jenkins 管道运行的 bash 触发。

问题是发生错误时管道不会停止。它不应该运行“echo git add”。

我添加了set -e - 但在这种情况下似乎不起作用。

由于 npm/node 中的错误,我可以做些什么来停止 bash 中的执行?

在詹金斯:

 stage('Deploy') {
  sh './scripts/deploy.sh'
 }

在 deploy.sh 中:

#!/bin/bash
set -e
npm run prepare-version

echo "git add ."

在 package.json 中:

"scripts": { "prepare-version": "node ./scripts/prepare.js" }

prepare.js:

 (async() => { 
   throw new Error('bug!!!');
 })();

【问题讨论】:

    标签: node.js bash jenkins npm


    【解决方案1】:

    您的 node.js 文件失败,尽管 bash 脚本成功执行了它。读取并比较状态码:

    #!/bin/bash
    set -e
    npm run prepare-version
    
    [[ $? != 0 ]] && exit;
    echo 'git add .'
    

    【讨论】:

    • 这不起作用,因为当我抛出错误时,nodejs 进程以 0 退出 - 出于某种原因。我不想使用 try..catch 和 process.exit(1)。 bash方面有解决方案吗?
    • 你可以添加process.on('unhandledRejection', error => { process.exit(1) }
    猜你喜欢
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    相关资源
    最近更新 更多