SSR в Nuxt (ошибка запроса)
Маюсь уже неделю не могу разрулить следующую проблему:
- Обновляю токен jwt и refresh
- Использую setTimeout с колбэклм внутри каторого делаю запрос на сервер для получения нудных данных
- При открытии страницы - > входа (login) -> через 1 мин (по таймеру) уходит запрос все ок.
- Я обновляю страницу в VUEX у меня используется nuxtServerInit (там тоже запрос на сервер при SSR)
- Все последующие запросы в рамках пункта 2 ошибка

В setTimeout при использовании consol.log я вижу

вот часть функции
inretTocen: async function () { // проверка времени жизни токена
console.log(this.token)
let shet = 0;
const iThis = this;
let teams = setTimeout(async function trek() {
console.log("Выполняем действие " + iThis.token )
if (iThis.tam()) {
console.log('Останавливаем')
clearTimeout(teams);
await fak(iThis)
} else {
teams = setTimeout(trek, 500)
}
}, 500, )
Складывается впечатление, что после обнавления страницы c использованием SSR появляется 2 запроса Cannot set headers after they are to client
Это проблема с SSR и Axios до этого была проблема с копированием Cookie в Axios ее я решил
Что я делаю не так?
полный код обновления
...
data: function () {
return {
name: "",
userNames: '',
token: this.$store.getters['auth/Token'],
intervalToken: setTimeout(async () => this.inretTocen(), 1000),
teamsnew: '',
tamw: '',
flag: true
}
}
...
inretTocen: async function () { // проверка времени жизни токена
console.log(this.token)
let shet = 0;
const iThis = this;
let teams = setTimeout(async function trek() {
console.log("Выполняем действие " + iThis.token )
if (iThis.tam()) {
console.log('Останавливаем')
clearTimeout(teams);
await fak(iThis)
} else {
teams = setTimeout(trek, 500)
}
}, 500, )
async function fak(iThis) {
if (iThis.flag) {
console.log("Отправляем запрос")
iThis.flag = false
let g = await iThis.$axios({
method: 'post',
url: '/api/updjwt',
withCredentials: true,
credentials: true,
params: {
jwt: iThis.$store.getters['auth/Token'],
id: iThis.$store.getters['auth/User'].id,
}
}).then(function (response) {
return response.data;
})
//console.log('g')
// console.log(g)
if (g) {
// При выходе пользователя очищаем переменную
iThis.tamw = '';
await iThis.$store.dispatch('auth/TOKEN', g.token);
//console.log(this.$store.getters['auth/Token'])
iThis.flag = true
}
}
}
},
tam: function () {
if (this.$store.getters['auth/Token']) {
console.log("Заходим в функцию - " + this.$store.getters['auth/Token'])
let decoded = jwt.decode(this.$store.getters['auth/Token'], {complete: true});
if (decoded) {
let a = Math.floor(Date.now() / 1000); // текущее состояние времени
let b = decoded.payload.exp // состояние времени токена
this.teamsnew = b - a // значение с минусом, токен не действителен
if (this.tamw === '') {
this.tamw = this.teamsnew * 0.6
}
if (this.teamsnew <= this.tamw) { //500 <= (500*0.05)=475
this.tamw = "Обновляем токен"
this.tamw = '';
console.log("Обновляем!")
return true
}else {
return false
}
}
}
}