Javascript 基本catch块中未处理的承诺拒绝

Javascript 基本catch块中未处理的承诺拒绝,javascript,node.js,error-handling,Javascript,Node.js,Error Handling,我试图将一个错误从一个函数抛出到另一个函数,并发送res.status(402)。我用最基本的方法把它放在一个try-catch块中,但仍然得到了错误 :未处理的拒绝承诺。此错误源于 在没有catch块的异步函数内部 这是调用函数: const validateAction=async(req,res)=>{ const{action,url,mail,orderId}=req.body; 试一试{ requestAction(操作、url、邮件、订单ID); }捕捉(错误){ 控制台错误(e

我试图将一个错误从一个函数抛出到另一个函数,并发送res.status(402)。我用最基本的方法把它放在一个try-catch块中,但仍然得到了错误

:未处理的拒绝承诺。此错误源于 在没有catch块的异步函数内部

这是调用函数:

const validateAction=async(req,res)=>{
const{action,url,mail,orderId}=req.body;
试一试{
requestAction(操作、url、邮件、订单ID);
}捕捉(错误){
控制台错误(err);
资源状态(402)。发送({
现状:402,
错误:“错误”,
});

}
您需要在承诺链中添加额外的
捕获
,例如:

const validateAction = async (req, res) => {
  const { action, url, mail, orderId } = req.body;
  requestAction(action, url, mail, orderId);
}
   

const requestAction = async (action, url, mail, oderId) => {
  const result = actions.find((actionFind) => actionFind.action === action);
  await axios({
    //change the action to "add"
    method: "post",
    url: "XXXXXXXXXXXXXXXXXXXX",
    data: {
      key: "XXXXXXXXXXXXXXXXXXXXXXXX",
      action: "XXXXX",
      service: XXXXXX,
      quantity: XXXXXXXXXX,
    },
  }).then(
    (response) => {
      if (response.data.error) {
        sendLog(
          ` ${response.data.error} --- URL:${url}   ACTION:${action}   QUANTITY:${result.quantity}   ID:${result.id}`,
          "error"
        );

        throw response.data.error;

      } else {
        sendMail(mail);
        sendLog(
          ` Succesfully sent it --- URL:${url}   ACTION:${action}   QUANTITY:${result.quantity}   ID:${result.id} To ${mail}`,
          "info"
        );
      }
    }).catch(() => {
       console.error(err);
        res.status(402).send({
          status: 402,
          error: "BUG",
        });
   });
};

基本上需要添加一个

等待因此等待请求操作(操作、url、邮件、订单ID)

在请求操作调用之前。
感谢Felix Kling

等待请求操作(操作、url、邮件、订单ID);
。您可能需要->
等待请求操作(
是的,基本而简单。我的坏。。