簡體   English   中英

貓鼬和BlueBird從諾言中回歸

[英]Mongoose and BlueBird return from promise

我使用貓鼬和藍鳥作為Promise框架。 每當我使用“保存”或“刪除”時,都會出現此錯誤:

Warning: a promise was created in a handler but was not returned from it

我確實嘗試過花幾天時間,而在谷歌搜索時,我嘗試了很多方法,其中包括:

  1. 創建承諾並在保存/刪除CB中解決;
  2. 將“回報”以多種邏輯組合進行組合,以確保它始終從承諾中“回報”。
  3. 在模型中創建函數,並將其命名為“ saveAsync”(我在一個示例中看到了),然后執行所有的Promise處理。
  4. Kinda很有趣,但是我嘗試更新我所有的項目npm軟件包,因為我在github上看到了關於它的討論,有人提到他們已經解決了。 但這沒用。

    還有更多..我真的很絕望。
    不要誤會我的意思,代碼可以很好地工作,但是每次在控制台中看到這個巨大的警告,我都會感到內。

有什么建議么?

此錯誤意味着某些代碼執行了以下操作:

somePromise.then(x => {
    someOtherPromiseReturningFunction();
}).then(value => {
   // forgot a return, oh dear
});

這是一個很常見的忘記return錯誤,它與錯誤處理混在一起並導致問題。

有時問題不在於您的代碼,而在於您所使用的庫的代碼-在這種情況下,您應該為該代碼禁用警告:

  • 通過require("bluebird")分別要求bluebird用於您自己的代碼和貓鼬,並將其與警告一起使用。
  • 禁用復制貓鼬使用的警告。

通過在代碼中使用require("bluebird")並使用require("bluebird/js/release/promise")();覆蓋貓鼬的Promise,可以獲得藍鳥的兩個副本require("bluebird/js/release/promise")(); 這將創建一個獨立副本。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM