Node / Express中的非异步功能中的UnhandledPromiseRejectionWarning

时间:2019-04-29 18:03:23

标签: javascript node.js express

我在理解此错误时遇到了一些问题。我有一个从端点调用的名为getDeliveryDate()的函数。此函数似乎是非异步函数,但出现了未处理的Promise错误:

// Deadlines increments are in minutes
function getDeliveryDate(
  inputDate,
  normalDeadline,
  fastDeadline,
  fastDelivery
) {
  var deliveryDate = new Date();

  try {
    !fastDelivery
      ? deliveryDate.setTime(inputDate + normalDeadline * 60 * 1000)
      : deliveryDate.setTime(inputDate + fastDeadline * 60 * 1000);

    return deliveryDate;
  } catch (error) {
    console.log("getDeliveryDate error:".error, error);//  <-- this line is okey, I am using colors library
  }

这是调用getDeliveryDate

的地方
...
     try {
              blockFields.finishDate = getDeliveryDate( // <-- the call
                Date.now(),
                req.body.blockOptions.deadline,
                req.body.blockOptions.fastDeadline,
                req.body.blockOptions.fastDelivery
              );
            } catch (error) {
              console.log("getDeliveryDate error".error, error); // <-- this line is okey, I am using colors library
            }
...

我缺少什么? getDeliveryDate是异步函数吗?如何正确处理其错误?

更新

我使用的变量后来被修改,因此不再存在。更正错误后,我仍然不确定如何捕获此函数的错误。

现在一切正常,但是如果我输入错误的变量,我仍然无法捕获该错误并得到此错误(即,如果我输入了错误的finishDate值):

(节点:50620)UnhandledPromiseRejectionWarning:ValidationError:阻止验证失败:finishDate:路径“ finishDate”的值“ Invalid Date”的强制转换为Date失败

为什么我的catch(错误)不起作用?

1 个答案:

答案 0 :(得分:1)

image = cv.imread("../images/img_fil_2.PNG") # load image gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) # convert image to grayscale edges = cv.Canny(gray, 100, 200) # detect edges of image 添加到用于启动Node的参数中。它应该向您显示未处理错误的堆栈跟踪。

但是,看起来--trace-warnings这一行确实是罪魁祸首。您在catch块中有一个错误,但是没有什么可以捕捉那个错误。