node.js - 防止 "Unhandled promise rejection"错误

标签 node.js promise

在我的服务器应用程序中,当用户没有端点权限时,我想返回一个“禁止”值。

为此,我创建了一个被拒绝的重用 promise :

export const forbidden = Promise.reject(new Error('FORBIDDEN'))

然后在应用的其他地方:

import {forbidden} from './utils'

...

    resolve: (root, {post}, {db, isCollab}) => {
        if (!isCollab) return forbidden
        return db.posts.set(post)
    },

但是,当我启动我的应用程序时,我收到了警告

(node:71620) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: FORBIDDEN
(node:71620) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

我如何告诉 Node 这个 Promise 可以不处理?

最佳答案

I create a rejected promise for reuse

好吧,不,创建一个函数以供重用可能会容易得多:

export function forbidden() { return Promise.reject(new Error('FORBIDDEN')); }

这也会在您每次调用它时为您提供适当的错误堆栈跟踪。

How can I tell Node that this Promise is fine to be unhandled?

什么都不做就处理它:

export const forbidden = Promise.reject(new Error('FORBIDDEN'));
forbidden.catch(err => { /* ignore */ }); // mark error as handled

(并且不要忘记包括关于这个看似无操作声明的目的的评论)。

关于node.js - 防止 "Unhandled promise rejection"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45895215/

相关文章:

javascript - 使用 Bluebird.mapSeries 按顺序处理一组 API 调用

node.js - Sequelize : building and saving an object that contains an array

javascript - 在 Node-Red 中使用 poloniex-api-node 时出错

node.js - 监视远程文件的文件大小变化

node.js - 使用 NodeGit CloneOptions 克隆一个分支

javascript - 如何仅在 Promise 完成后才执行函数?

javascript - 传播 Promise 并在新对象中扩展

node.js - 更改端口而不丢失数据

javascript - 使用 Promise 控制 VueJ 中的事件流

javascript - 在这种情况下,什么是蹦床?