訴7.5.0我越來越 UnhandledPromiseRejectionWarning & & DeprecationWarning 我知道的新功能的一部分,因爲節點6.6,但我不明白的事情是我在將它緩存到一個變量後捕捉到了這個承諾。如果我不緩存它,則不會引發警告。 這是引發錯誤的代碼:緩存承諾使用的NodeJS導致未處理的承諾排斥的Node.js
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()是用於檢查谷歌的身份驗證令牌,並返回一個承諾的功能。 節點輸出如下:
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);
});
NO發出警告! 我想我錯過了一些微妙的東西,但我不明白可能是什麼。有人有什麼線索嗎? 在此先感謝
偉大的答案我真的錯過了這一點。非常感謝。 – user1658162