无法在Express Node

时间:2018-12-12 03:44:52

标签: node.js express

我有一条以下邮政路线

router.post("/message", async (req, res) => {
  const newMessage = new Message({
    From: req.body.sendersPhoneNumber,
    To: 9188123560,
    OTP: req.body.randomNumber,
    Message: req.body.TextToSend
  })

  newMessage.save().then((response) => {
    const from = "NEXMO"
    const to = response.To
    const text = response.Message
    nexmo.message.sendSms(from, to, text, {type: 'unicode'}, (error, responseData) => {
      if (error) {
      console.log(error)
      throw  new Error (error)
      } else {
        console.dir(responseData)
        res.send(responseData)
      }
    })
  })
})

在这种情况下,我想抛出一个错误,如果我做了这样的错误

 if (error) {
      console.log(error)
      throw  new Error (error)
    }

但这似乎不起作用,可以通过共享为我提供一些帮助,如何在nodeJs中抛出错误

这是我来自前端的请求

axios.post(test_url_base +  "/contact/message", this.state).then(response => {   

3 个答案:

答案 0 :(得分:0)

正如您所做的那样,这也是正确的方法,但是我不知道为什么它不起作用。

您也可以尝试这个

if (error) {
   return next(error)
}

或者您也可以这样做

res.render('error', { error: err })

答案 1 :(得分:0)

放置try catch块,以便从try块引发的任何错误都被catch块捕获。

router.post("/message", async (req, res) => {
try {
    const newMessage = new Message({
        From: req.body.sendersPhoneNumber,
        To: 9188123560,
        OTP: req.body.randomNumber,
        Message: req.body.TextToSend
    })

    newMessage.save().then((response) => {
        const from = "NEXMO"
        const to = response.To
        const text = response.Message
        nexmo.message.sendSms(from, to, text, { type: 'unicode' }, (error, responseData) => {
            if (error) {
                console.log(error)
                throw new Error(error)
            } else {
                console.dir(responseData)
                res.send(responseData)
            }
        })
    });
}
catch (e) {
    res.send({ status: 400, error: e });
}
})

答案 2 :(得分:0)

解决方案01:

第1行:需要第三个参数const af::array &A才能将错误传递给下一个处理程序。

第16行:将错误传递给下一个错误处理程序next

注意:在您的根文件中,例如return next(error);index.js或您使用的任何文件,您都需要一个错误处理程序,例如

server.js

您的最终代码将是

app.use((err, req, res, next) => {
   console.log('Found a error');
});

解决方案2:

如果遇到错误,请将错误传递给客户端, 使用router.post("/message", async (req, res, next) => { const newMessage = new Message({ From: req.body.sendersPhoneNumber, To: 9188123560, OTP: req.body.randomNumber, Message: req.body.TextToSend }) newMessage.save().then((response) => { const from = "NEXMO" const to = response.To const text = response.Message nexmo.message.sendSms(from, to, text, {type: 'unicode'}, (error, responseData) => { if (error) { console.log(error) return next(error); } else { console.dir(responseData) res.send(responseData) } }) }) })

在这种情况下,您的代码应该是

res.status(400).send(error);