使用nodejs v.7.5.0我得到了 UnhandledPromiseRejectionWarning&& DeprecationWarning 我从节点6.6开始就知道它的一部分新功能,但我不明白的是我在将它缓存到变量之后就抓住了这些承诺。如果我不缓存它,则不会发出警告。 这是抛出错误的代码:
let verifyPromise = verifyToken(id_token);
verifyPromise.catch((err) => {
log(err);
});
let verifyOkPromise = verifyPromise.then((login) => {
return DB_API.getTokenById(id_token);;
});
verifyOkPromise.catch((err) => {
log('error in finding token: ', err);
});
verifyOkPromise.then((dbRes) => {
log('loggin res in finding token: ', dbRes);
});
其中verifyToken()是一个检查google身份验证令牌并返回承诺的函数。 节点输出如下:
error in finding token: { CouchbaseError message: 'The key does not exist on the server', code: 13 }
(node:10961) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): CouchbaseError: The key does not exist on the server
(node:10961) 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.
正如你所看到的那样,承诺错误分支会定期捕获,因为它按预期记录但我仍然收到警告!!!!
而如果我只是追加这样的捕获:
verifyPromise.then((login) => {
return DB_API.getTokenById(id_token);;
}).catch((err) => {
log('error in finding token: ', err);
});
没有警告!!! 我想我错过了一些微妙的东西,但我不明白可能是什么。 有人有任何线索吗? 提前谢谢