将来,未处理的 Promise 拒绝将会以非零退出代码终止 Node.js 进程。
我的管道在本应该失败的时候却通过了,并且部署了一个在启动时崩溃的版本。如果 Node.js 以非零退出代码退出,则管道将会失败,并且不会部署错误版本。
有没有办法让 Node.js 在遇到未处理的 Promise 拒绝时以非零退出代码退出,而不需要我等待未来?
对于
node
12 及更高版本:
node --unhandled-rejections=strict
是的,您可以,在 unhandledRejection
对象上使用
process
事件:
process.on('unhandledRejection', (reason, p) => {
console.error('Unhandled Rejection at:', p, 'reason:', reason)
process.exit(1)
});
我喜欢通过环境变量设置这些选项:
export NODE_OPTIONS="--unhandled-rejections=strict"
您还可以在项目根目录中添加 .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 文件来配置其运行时。