SkipTyler
@SkipTyler
Junior+ Front-End developer

Почему падает приложение Vue?

Начался проводится тест нагрузки на сервер. Если в этот момент с клиента обратится к апи, то падает сервер приложения Vue + SSR

Запрос выполняется в asyncData

async asyncData({store}) {
    return Promise.all([
        store.dispatch('func1'),
        store.dispatch('func2'),
        store.dispatch('func3'),
        store.dispatch('func4',
    ]).then(values => {
        return values;
    });
},


Если использовать await func() вместо Promise.all() то все ок.

В момент падения, любые(postman, на пример) запросы к апи возвращают ошибку `504 Gateway Timeout `.
В консоле сервера приложения ничего нету(
Пока не перезагрузишь сервер приложения.

С чем может быть связано?

Конфиги vue + ssr

server.js
entry-server.js
entry-client.js
  • Вопрос задан
  • 208 просмотров
Пригласить эксперта
Ответы на вопрос 1
Не углубляясь в реализацию, обычно из asyncData возвращают Promise<Object|void>, а у вас Promise<Array>. Да, массив тоже объект, но пути джаваскриптовы неисповедимы. Этот массив потом передаётся в функцию роутера next в entry-client.js:16, которая тоже не должна уметь его обрабатывать, и т.д. и т.п.

Так или иначе, если asyncData используется только для наполнения store, смысла передавать что-либо в resolve промиса нет:

async asyncData ({ store }) {
  await Promise.all([
    store.dispatch('func1'),
    store.dispatch('func2'),
    store.dispatch('func3'),
    store.dispatch('func4')
  ])
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы