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

Vue使用Axios.get从Imgur拉取图片时token未定义及图片不显示问题

问题1:Property "token" was accessed during render but is not defined on instance 报错修复

触发原因是你在某组件模板中直接使用了token变量,但没有在对应组件的实例上定义该属性,按如下步骤排查修改:

  1. 先确认Vuex已正确注册auth模块,示例store入口配置:
// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
import auth from './modules/auth'
import images from './modules/images'

Vue.use(Vuex)

export default new Vuex.Store({
  modules: { auth, images }
})
  1. 如果确实需要在模板中使用token,在对应组件中通过mapState映射token为计算属性:
// 用到token的组件script部分
import { mapState } from 'vuex'
export default {
  // 原有配置
  computed: {
    ...mapState('auth', ['token']),
    // 原有其他计算属性,比如之前的mapGetters
  }
}
  1. 如果不需要在模板中使用token,直接删掉所有模板中多余的token变量引用即可。

触发原因是imgur.js中调用的Imgur接口地址拼写错误,原代码写的是单数/image/,正确的获取用户图片接口是复数/images,修改如下:

// imgur.js fetchImages方法修改
fetchImages(token) {
    return axios.get(`${ROOT_URL}/3/account/me/images`, { // 把image改为images
        headers: {
            Authorization: `Bearer ${token}`
        }
    });
},

之前请求错误接口返回的结构不是预期的图片数组,遍历的元素没有link字段,JS原型链向上查找触发了原生link方法,才会输出函数内容。修改接口地址后返回的结构中每个图片对象的link字段就是有效的图片地址,可正常渲染。


补充优化建议

可以在调用拉取图片接口前加登录状态判断,避免未登录时token为空引发接口报错:

// Galleries.vue created钩子修改
created() {
  if (this.$store.getters.isLoggedIn) {
    this.fetchImages()
  } else {
    this.$store.dispatch('login')
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:39:03