页面加载时,我正在尝试对用户进行身份验证。所以我有以下代码:
actions: {
nuxtServerInit ({dispatch, commit, app}, context) {
return new Promise((resolve, reject) => {
const cookies = cparse.parse(context.req.headers.cookie || '')
if (cookies.hasOwnProperty('x-access-token')) {
app.$axios.setToken(cookies['x-access-token'], 'Bearer')
api.auth.me2()
.then(result => {
commit('setUser', result.data.user)
resolve(true)
})
.catch(error => {
commit('resetUser')
resetAuthToken()
resolve(false)
})
} else {
resetAuthToken()
resolve(false)
}
})
}
但是我遇到以下错误: 无法读取未定义的$ axios属性。我的代码有什么问题?
答案 0 :(得分:1)
应用程序应来自上下文,例如从第二个论点。 所以你的代码应该是
context.app.$axios.setToken(cookies['x-access-token'], 'Bearer')
答案 1 :(得分:1)
另一种方式。您可以在第二个参数中传递app
使得
nuxtServerInit ({dispatch, commit}, {app}) {
完整代码:
actions: {
nuxtServerInit ({dispatch, commit}, {app}) {
return new Promise((resolve, reject) => {
const cookies = cparse.parse(context.req.headers.cookie || '')
if (cookies.hasOwnProperty('x-access-token')) {
app.$axios.setToken(cookies['x-access-token'], 'Bearer')
api.auth.me2()
.then(result => {
commit('setUser', result.data.user)
resolve(true)
})
.catch(error => {
commit('resetUser')
resetAuthToken()
resolve(false)
})
} else {
resetAuthToken()
resolve(false)
}
})
}
}