未为asnycData请求执行Nuxtjs Axios onRequest()

问题描述 投票:0回答:1

我已配置axios插件onRequest帮助程序,以在如下所示的API请求上设置Authorization标头

1. export default function({ $axios, redirect, app, store }) {
2. $axios.onRequest(config => {
3.   var requestURL = config.url;
4.   console.log("Making request to " + requestURL);
5.    const token = store.state.user.account.token;
6.    if (token) {
7.      config.headers.common["Authorization"] = `Bearer ${token}`;
8.      console.log("Added authorization header");
9.    }
10. });

onRequest助手在actions中为store调用。但是,对于页面组件中的asyncData,调用会一直持续到上面的第2行,但永远不会进入onRequest函数。

import axios from "axios";

asyncData({ params }) {
console.log("params: " + params);
return axios
  .get(`http://localhost:8080/user/id/${params.id}`)
  .then(res => {
    return { userData: res.data };
  })
  .catch(e => {
    error({ statusCode: 404, message: "User not found" });
  });
}

据我所知,所有Axios请求都应通过onRequest辅助函数传递。我在这里想念什么吗?如何解决?

vue.js axios nuxt.js interceptor nuxt
1个回答
0
投票

当您import axios from 'axios'时,您没有使用最初指定的axios实例的配置。相反,您使用的是全新的axios实例。

正确的方法是利用$axios中的Nuxt context实例。

asyncData(context) {
   await context.$axios...
}
© www.soinside.com 2019 - 2024. All rights reserved.