防止“未处理的承诺拒绝”错误
在我的服务器应用程序中,当用户没有对端点的权限时,我想返回一个“禁止”值。
为此,我创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
(并且不要忘记包括关于这个看似没有用处的声明的目的的评论)。