无法在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" }

有没有人有一个线索?

解决方案:

这个错误可能是因为你在调用API时没有设置主机。

return axios.get('/api/users/' + this.userId)

404错误是因为浏览器没有找到这个端点.在这种情况下,我建议你尝试在另一个工具中调用这个端点(如Postman),并证明你的API是否正确响应.之后,修复你对端点的调用,也许它会像下面的代码一样,然后再尝试:

return axios.get(`${your host here}/api/users/ + ${this.userId}`)

给TA打赏
共{{data.count}}人
人已打赏
解决方案

Spring反应式编程:如何创建一个动态的Publishers列表作为Flux.merge的输入。

2022-4-22 5:00:17

解决方案

Codility - CountDiv JavaScript解决方案

2022-4-22 5:00:19

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索