@procode
Разработчик

Как передать данные из Nuxt (universal) serverMiddleware «наверх» чтобы отобразить на странице?

Добрый день.

Сделал кастомное middleware на стороне сервера по примеру https://nuxtjs.org/api/configuration-servermiddleware/ и есть несколько вопросов:

1. Допустим я сгенерировал данные внутри middleware - как мне их теперь отобразить на странице браузера? Как передать выше?

2. Пробовал через $store (Vuex) - но ничего не вышло. Я понимаю, что я не понимаю чего-то базового здесь, но чего именно - не понимаю))

3. Почему у меня в middleware (в примере это файл api/logger.js) переменная
process.server == undefined
почему такое? Гуглил, народ пишет, что у них вроде работает ...но это не точно))

Подскажите в какую сторону копать, или может ссылку на пример.

Оч признателен заранее.
  • Вопрос задан
  • 1362 просмотра
Пригласить эксперта
Ответы на вопрос 2
bootd
@bootd
Гугли и ты откроешь врата знаний!
Есть 2 вида middleware - это просто middleware и serverMiddleware.

Обычные middleware - это для vue router, как на клиенте, так и на сервере, т.е. работают только для vue, serverMiddleware для экспреса, который у нас под капотом изначально.
Но сначала работает экспресс и его serverMiddleware(если такие есть у вас), а уже потом vue и его router.

Из serverMiddleware нельзя ничего передать в vue и ему подобные модули, т.к. сам vue ещё не инициализирован так сказать.
Из middleware вы можете передавать данные в хранилище vue

process.server работает только, когда контент генериться на сервере. Если у вас он undefined, значит переменная сработала на клиенте, ну и использовать process.server в serverMiddleware либо нельзя(я не проверял), либо бессмысленно, т.к. это и так сервер и только сервер
Ответ написан
Поздновато наверно но есть метод в Store nuxtServerInit в который в качестве параметров передаются store и серверный контекст. Там можно как раз в store засунуть данные с сервера.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы