防止“未处理的承诺拒绝”错误

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

为此,我创build了一个拒绝重用的承诺:

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. 

我怎么能告诉节点,这个承诺罚款是未经处理的?

我创build了一个拒绝重用的承诺

那么不要,创build一个重用函数可能会容易得多:

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

每次调用这个错误时,这也会给你一个适当的堆栈跟踪。

我怎么能告诉节点,这个承诺罚款是未经处理的?

只是无所作为而已:

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

(并且不要忘记包括关于这个看似没有用处的声明的目的的评论)。