在我的服务器应用程序中,当用户没有端点权限时,我想返回一个“禁止”值。
为此,我创建了一个被拒绝的重用 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/