В настоящее время у меня проблемы с моим кодом, не вызывающим функцию в JavaScript. Я пытаюсь вызвать функцию для обновления моего токена JWT, но по какой-то причине он ее вообще не вызывает.
Я добавил несколько текстов отладки, чтобы увидеть, где он может работать, и по какой-то причине он не будет вызывать функцию.
Это функция, которая не вызывается. Консоль никогда не напечатает «Тест 2 пройден»
function refreshToken(store) {
console.log('Test 2 passed'); //This doesnt get displayed in the console
if(store.state.auth.isRefreshing) {
return store.state.auth.refreshingCall;
}
console.log('Test 3 passed');
store.commit('setIsRefreshing', true);
const refreshingCall = window.axios.get('/api/user/refresh-token').then(token => {
console.log('Test 4 passed');
originalRequest['Authorization'] = 'Bearer ' + token;
store.commit('setIsRefreshing', false);
store.commit('setRefreshingCall', undefined);
console.log('Token has been updated to: '+ JSON.stringify(token));
localStorage.setItem('token', token);
window.axios.defaults.headers.common['Authorization'] = 'Bearer '+ token;
store.commit('setToken', token);
console.log('Test 5 passed');
return Promise.resolve(originalRequest);
});
store.commit('setRefreshingCall', refreshingCall);
return refreshingCall;
}
Это перехватчик axios, который обнаружит, что страница возвращает 401, поэтому он может вызвать функцию обновления токена
window.axios.interceptors.response.use(function (response) {
// Do something with response data
return response;
}, function (error) {
let res = error.response;
if (res.status === 401 && res.config && !res.config.__isRetryRequest) {
// Do something with response error
alert("You're login session expired. Please log in again.")
console.log('Test 1 passed'); //This gets displayed in the console
var ret = refreshToken(this.store).then(__ => {
error.config.headers['Authorization'] = 'Bearer ' + store.state.token;
error.config.baseURL = undefined;
console.log('I have ran the last part: '+ store.state.token);
console.log('Test 6 passed');
return window.axios.request(error.config);
});
return ret;
}
return Promise.reject(error);
});
Кажется, я не могу понять, почему функция не вызывается, есть идеи?
(изображение консоли)
![enter image description here](https://i.stack.imgur.com/07Phv.png)