You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt.js结合Django搭建鉴权系统时axios GET请求读取$auth报错

错误原因

你遇到的报错核心是this指向异常,触发的原因有两个:

  1. 模板中的this是Vue框架自动绑定了当前组件实例的,所以可以正常读取$auth属性。但你写的两个axios请求直接放在了组件export default配置对象的外部,这部分代码会在组件模块被加载时就提前执行,此时没有组件实例上下文,严格模式下this默认指向undefined,自然读取不到$auth属性。
  2. 就算把请求放到export default内部,也不能直接写在配置根节点,必须放在组件的生命周期钩子(比如页面挂载触发的mounted钩子)或者方法内,才能拿到正确的组件实例this。

修复后完整代码

<template>
  <div>
     <!-- 模板内不需要写this,Vue自动绑定实例 -->
     {{ $auth.$storage.state.user.email }}
  </div>
</template>

<script>
import axios from 'axios';
export default {
  // 页面挂载完成后执行请求
  mounted() {
    // 此处this指向当前组件实例,可以正常读取$auth
    axios.get('/api/v1/is-success-or-not?email=' + this.$auth.$storage.state.user.email)
      .then((response) => {
        if(response.data === "True") {
          console.log("Player is success")
          // 组件内部直接通过this访问路由实例即可
          this.$router.push('/schedule')
        }
      })

    axios.get('failureornot?email=' + this.$auth.$storage.state.user.email)
      .then((response) => {
        if(response.data > 3) {
          console.log("failure")
          this.$router.push('/failure')
        }
      })
  }
}
</script>

优化建议

  • 拼接URL参数建议改用axios的params配置项,框架会自动对参数编码,避免邮箱包含特殊字符时触发请求异常
  • 可以给请求加catch回调捕获接口错误,避免接口异常导致页面无响应
  • 如果你项目中安装了@nuxtjs/axios模块,可以直接用this.$axios发起请求,不需要手动import axios

内容的提问来源于stack exchange,提问作者user15118945

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:24:09