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

Can I get the future unhandled promise rejection behaviour now?

In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

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

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

是的,你可以,使用 the unhandledRejection event on the process object:

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

对于 node 12 及更高版本:

node --unhandled-rejections=strict

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

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

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

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

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