我有一条以下邮政路线
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 => {
答案 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);