簡體   English   中英

UnhandledPromiseRejectionWarning:未處理的承諾拒絕(拒絕ID:3):

[英]UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 3):

我是新來的等待。 我只是不知道如何處理所有等待錯誤和拒絕。 總是有來自shopify-api.js函數的無法處理的拒絕,我無法打印出所有由我創建的index.js中間件引起的錯誤嗎?

如何打印所有錯誤? 我在等待正確處理嗎?

index.js

 const functions = require('firebase-functions'); const app = require('express')(); const cors = require('cors'); // Automatically allow cross-origin requests app.use(cors({ origin: true })); const asyncMiddleware = fn => (req, res, next) => { Promise.resolve(fn(req, res, next)) .catch((err) => { console.error(err); res.json(err) }) .catch(next) }; app.get('/v1/Test/Shopify', asyncMiddleware ( async (req, res, next) => { req.params.workshopId = "TEST_CR" req.params.date = "2018-11-30" req.params.startTime = "11:00" let result1 = await ShopifyWorkshop.AddDate(req, res, next) console.log("ShopifyWorkshop.AddDate: Success" .green) res.status(200).json({message: "Success"}) })); 

 exports.AddDate = async (req, res, next) => { await Helper.CheckParamsIsNull(req.params) let wsId = req.params.workshopId let wsDate = req.params.date let wsTime = req.params.startTime // Check if workshop is a level if (Helper.IsWorkshopType(wsId)) { return await Promise.all(WORKSHOP_TYPE[wsId].levelNames.map( async (typeName) => { WORKSHOP_CATEGORY[typeName].codeNames.map( async (codeName) => { for (let wsId in WORKSHOP_INFO) { if (WORKSHOP_INFO[wsId].codeName === codeName) { addVariant(wsId, wsDate, wsTime) } } }) })) } else if (Helper.IsWorkshopCategory(wsId)) { return await Promise.all(WORKSHOP_CATEGORY[wsId].codeNames.map ( async (codeName) => { for (let wsId in WORKSHOP_INFO) { if (WORKSHOP_INFO[wsId].codeName === codeName) { await addVariant(wsId, wsDate, wsTime) } } })) } else { return await addVariant(wsId, wsDate, wsTime) } } 

shopify-api.js

 exports.AddAProductVariant = async (id, options) => { console.log("Adding variant to product..." + options.option1) let result = await shopify.productVariant.create(id, options) console.log("Added product variant: " + options.option1) return result } 

在行中

async (typeName) => {
    WORKSHOP_CATEGORY[typeName].codeNames.map( async (codeName) => {
       …
    })
}

您正在創建一個承諾數組,但是忽略它們。 在它們周圍添加另一個Promise.all包裝器,以便能夠將所有它們的承諾返回到外部map

(typeName) => {
    return Promise.all(WORKSHOP_CATEGORY[typeName].codeNames.map( async (codeName) => {
//  ^^^^^^^^^^^^^^^^^^
       …
    }))
}

暫無
暫無

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

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