我现在可以获得未来未处理的承诺拒绝行为吗?

问题描述 投票:0回答:4

将来,未处理的 Promise 拒绝将会以非零退出代码终止 Node.js 进程。

我的管道在本应该失败的时候却通过了,并且部署了一个在启动时崩溃的版本。如果 Node.js 以非零退出代码退出,则管道将会失败,并且不会部署错误版本。

有没有办法让 Node.js 在遇到未处理的 Promise 拒绝时以非零退出代码退出,而不需要我等待未来?

javascript node.js promise unhandled
4个回答
13
投票

对于

node
12 及更高版本:

node --unhandled-rejections=strict

12
投票

是的,您可以,在 unhandledRejection

 对象上使用 
process
事件:

process.on('unhandledRejection', (reason, p) => {
  console.error('Unhandled Rejection at:', p, 'reason:', reason)
  process.exit(1)
});

12
投票

我喜欢通过环境变量设置这些选项:

export NODE_OPTIONS="--unhandled-rejections=strict"

6
投票

您还可以在项目根目录中添加 .npmrc 文件。 将以下内容放入文件中:

node-options="--unhandled-rejections=strict"

每次执行 npm 命令时,都会解析目录中的文件并读取文件中的选项。

您可以运行 package.json 中定义的 npm run 之一。

./my-project-folder
     |-- .npmrc
     |-- package.json
     |-- src/
           |-- index.js

更改到您的工作目录并执行命令

npm run start
// or
npm test

“start”和“test”是 package.json 中需要定义的脚本。 npm 使用节点来执行代码,节点二进制文件本身正在寻找 .npmrc 文件来配置其运行时。

© www.soinside.com 2019 - 2024. All rights reserved.