mysql - vue端无法显示express res.send()自定义错误信息
问题描述
我有一个带有 express 和 mySQL 的 nuxt 应用程序。
问题:我无法在 vue 端显示 express res.send() 自定义错误消息
假设我想显示一个用户的信息。
这是我的后端代码:
// Find a single User with a userId
exports.findOne = (req, res) => {
User.findById(req.params.userId, (err, data) => {
if (err) {
if (err.kind === 'not_found') {
res.status(404).send({
message: `Not found User with id ${req.params.userId}.`
})
} else {
res.status(500).send({
message: 'Error retrieving User with id ' + req.params.userId
})
}
} else { res.send(data) }
})
}
这是 Vue 部分
<script>
import axios from 'axios'
import appNavbar from '~/components/appNavbar.vue'
export default {
components: {
appNavbar
},
data () {
return {
userId: '',
userData: '',
errorMsg: ''
}
},
methods: {
fetchUser (evt) {
evt.preventDefault()
return axios.get('/api/users/' + this.userId)
.then((res) => {
this.userData = res.data
})
.catch((err) => {
this.errorMsg = err.toJSON()
})
}
}
}
</script>
当我给一个不存在的用户的 id 时,我希望能够得到写在后面的自定义错误信息,并显示在前面
但我只得到这个 JSON
{ "message": "Request failed with status code 404", "name": "Error" }
有人有线索吗 ?谢谢 !
解决方案
可能会发生此错误,因为您在调用 teh API 时没有设置主机:
return axios.get('/api/users/' + this.userId)
404 错误是因为浏览器未找到此端点。在这种情况下,我建议您尝试在另一个工具(如 Postman)中调用此端点并验证您的 API 是否正确响应。在那之后,修复你对端点的调用,也许它会像下面的代码一样,然后再试一次:
return axios.get(`${your host here}/api/users/ + ${this.userId}`)
推荐阅读
- c++ - 在 bash 中运行命令和在 Makefile 中运行命令有什么区别?
- javascript - WebView2 - 获取属性
- amazon-web-services - 您如何从 aws cli 获取访问令牌到期时间?
- c# - 如何在工具栏跨平台更改三个 btn 的颜色
- ubuntu - 如何防止 conda 全局安装 cudatoolkit 10
- spring-boot - 如何在 Spring Boot Thymeleaf 列表中使用 Bootstrap 模式?
- powershell - 如何在 Azure CLI 任务中设置 put 变量
- gitlab - 使用 Semantic Versioning 或 Lerna Publish 从 CI/CD 部署时如何确保 Master 和 Dev 分支保持同步
- delphi - SVG 颜色问题:RED 颜色显示为 GREY
- javascript - 将一个数组排序为尽可能接近另一个数组