import axios, { type AxiosRequestConfig, type AxiosResponse, isAxiosError } from "axios"; import router from '@/router'; // 引入Vue Router实例 import { useTokenStore } from '@/stores/mytoken'; // 引入Pinia store // 创建 axios 实例 const request = axios.create({ baseURL: import.meta.env.VITE_API_URL, // 使用环境变量配置的API URL timeout: 10000, headers: { 'Content-Type': 'application/json', }, }); // 请求拦截器 request.interceptors.request.use( (config) => { if (!config.headers) { config.headers = {} as any; // 强制转换以避免类型不匹配的问题 } console.log('Starting Request', config); // 调试信息 return config; // 记得返回配置 }, (error) => { console.error('Request error:', error); return Promise.reject(error); } ); // 响应拦截器(可选) request.interceptors.response.use( (response: AxiosResponse) => response, async (error) => { if (isAxiosError(error)) { console.error('Response error:', error.message); if (error.response && error.response.status === 401) { // 如果是401未授权错误,则清除token并重定向到登录页 const tokenStore = useTokenStore(); tokenStore.clearToken(); // 清除token信息 router.push('/login'); // 重定向到登录页面 } } return Promise.reject(error); } ); console.log('Base URL:', request.defaults.baseURL); // 打印检查 export default request;