Size: a a a

Nuxt.js | Vue SSR

2021 March 12

С

Сергей М. in Nuxt.js | Vue SSR
Добрый день. Почему то при переходе из результатов поиска Яндекса, вываливается 500 ошибка. Если обновить, то все хорошо. Запрос до бэкенда даже не доходит.
Из выдачи Гугла, проблем с переходом нет. Роботы, и Яндекса и Гугла, тоже не жалуются. Чем лечить?
источник

𝔹𝕂

𝔹𝕒𝕙𝕒 𝕂𝕒𝕚𝕪𝕣𝕓𝕖𝕜𝕠𝕧... in Nuxt.js | Vue SSR
Сергей М.
Добрый день. Почему то при переходе из результатов поиска Яндекса, вываливается 500 ошибка. Если обновить, то все хорошо. Запрос до бэкенда даже не доходит.
Из выдачи Гугла, проблем с переходом нет. Роботы, и Яндекса и Гугла, тоже не жалуются. Чем лечить?
Все запросы в try catch  оборачивать)
источник

С

Сергей М. in Nuxt.js | Vue SSR
𝔹𝕒𝕙𝕒 𝕂𝕒𝕚𝕪𝕣𝕓𝕖𝕜𝕠𝕧
Все запросы в try catch  оборачивать)
 async articleDetail({commit}, params) {
   try {
     const article = await this.$axios.$get(`/pages/article/${params.page}/?cat=${params.cat}`)
     const name = article.category.breadcrumb.toLowerCase()
     commit('setObj', {name: 'logoSubtext', value: name}, {root: true})
     commit('comments/setObj', {name: 'comments', value: article.comments}, {root: true})
     return article
   } catch (e) {
     this.$toast.error(e).goAway(3500)
     console.log(e)
   }
 }
- все завернуто
источник

AD

Aleksandr Dergunov in Nuxt.js | Vue SSR
Сергей М.
 async articleDetail({commit}, params) {
   try {
     const article = await this.$axios.$get(`/pages/article/${params.page}/?cat=${params.cat}`)
     const name = article.category.breadcrumb.toLowerCase()
     commit('setObj', {name: 'logoSubtext', value: name}, {root: true})
     commit('comments/setObj', {name: 'comments', value: article.comments}, {root: true})
     return article
   } catch (e) {
     this.$toast.error(e).goAway(3500)
     console.log(e)
   }
 }
- все завернуто
Это в асинкДате, надеюсь?
источник

С

Сергей М. in Nuxt.js | Vue SSR
Aleksandr Dergunov
Это в асинкДате, надеюсь?
в сторе, а дергает из asyncData
источник

С

Сергей М. in Nuxt.js | Vue SSR
async asyncData({store, params, error}) {
     try {
       let article = await store.dispatch('pages/articleDetail', params);
источник

AD

Aleksandr Dergunov in Nuxt.js | Vue SSR
Что пишут логи?
источник

𝔹𝕂

𝔹𝕒𝕙𝕒 𝕂𝕒𝕚𝕪𝕣𝕓𝕖𝕜𝕠𝕧... in Nuxt.js | Vue SSR
Сергей М.
async asyncData({store, params, error}) {
     try {
       let article = await store.dispatch('pages/articleDetail', params);
что вы жмотите код )) покажите полностью asyncData
источник

С

Сергей М. in Nuxt.js | Vue SSR
вроде того
    async asyncData({store, params, error}) {
     try {
       let article = await store.dispatch('pages/articleDetail', params);
       return article
     } catch(err) {
     throw new Error(err)
   }
источник

ЕЕ

Евстафий Ерофеев... in Nuxt.js | Vue SSR
Бонжур, братцы. Философский вопрос:
Представьте что у ваших пользователей есть разные роли с разными обязанностями или функциями.

И вот для одной роли вы пилите страницу, допустим /requests. У этой страницы свой функционал, своя логика которая связанна именно с первой ролью.

Спустя время вам надо сделать точно такой же роут для другой роли (/requests) но там совсем другой функционал, никак не связанный с первой ролью

Есть идеи как такое можно провернуть: роут один, но для разных ролей - свой компонент?

Идея с префиксом с начале роута отклонена
источник

С

Сергей М. in Nuxt.js | Vue SSR
Сергей М.
вроде того
    async asyncData({store, params, error}) {
     try {
       let article = await store.dispatch('pages/articleDetail', params);
       return article
     } catch(err) {
     throw new Error(err)
   }
повторю, проблема существует только при переходе из выдачи яндекса... релоад, заход напрямую или переход из гугла происходят нормально
источник

AY

Andrey Yanusov in Nuxt.js | Vue SSR
Сергей М.
повторю, проблема существует только при переходе из выдачи яндекса... релоад, заход напрямую или переход из гугла происходят нормально
можно в режиме dev запустить на проде и посмотреть, что выдаёт в ошибку
Как вариант)
источник

𝔹𝕂

𝔹𝕒𝕙𝕒 𝕂𝕒𝕚𝕪𝕣𝕓𝕖𝕜𝕠𝕧... in Nuxt.js | Vue SSR
Сергей М.
вроде того
    async asyncData({store, params, error}) {
     try {
       let article = await store.dispatch('pages/articleDetail', params);
       return article
     } catch(err) {
     throw new Error(err)
   }
прочитай про asyncdata и сделай так тогда ошибка исчезнить
async asyncData({store, params, error}) {
      try {
       let article = await store.dispatch('pages/articleDetail', params);
       return {
        article: article
}
     } catch() {
       return {
article: {} или null или []
}
   }
источник

BS

Bogdan Saliuk in Nuxt.js | Vue SSR
Евстафий Ерофеев
Бонжур, братцы. Философский вопрос:
Представьте что у ваших пользователей есть разные роли с разными обязанностями или функциями.

И вот для одной роли вы пилите страницу, допустим /requests. У этой страницы свой функционал, своя логика которая связанна именно с первой ролью.

Спустя время вам надо сделать точно такой же роут для другой роли (/requests) но там совсем другой функционал, никак не связанный с первой ролью

Есть идеи как такое можно провернуть: роут один, но для разных ролей - свой компонент?

Идея с префиксом с начале роута отклонена
два компонента-страницы, если угодно. Загружаешь нужный в зависимости от роли
источник

ЕЕ

Евстафий Ерофеев... in Nuxt.js | Vue SSR
Bogdan Saliuk
два компонента-страницы, если угодно. Загружаешь нужный в зависимости от роли
на этапе построения самого роутера определять что импортировать?
источник

AY

Andrey Yanusov in Nuxt.js | Vue SSR
𝔹𝕒𝕙𝕒 𝕂𝕒𝕚𝕪𝕣𝕓𝕖𝕜𝕠𝕧
прочитай про asyncdata и сделай так тогда ошибка исчезнить
async asyncData({store, params, error}) {
      try {
       let article = await store.dispatch('pages/articleDetail', params);
       return {
        article: article
}
     } catch() {
       return {
article: {} или null или []
}
   }
а, и так тоже правда)
источник

ЕЕ

Евстафий Ерофеев... in Nuxt.js | Vue SSR
я как то такое делал давно, но считал костылем
источник

𝔹𝕂

𝔹𝕒𝕙𝕒 𝕂𝕒𝕚𝕪𝕣𝕓𝕖𝕜𝕠𝕧... in Nuxt.js | Vue SSR
Сергей М.
 async articleDetail({commit}, params) {
   try {
     const article = await this.$axios.$get(`/pages/article/${params.page}/?cat=${params.cat}`)
     const name = article.category.breadcrumb.toLowerCase()
     commit('setObj', {name: 'logoSubtext', value: name}, {root: true})
     commit('comments/setObj', {name: 'comments', value: article.comments}, {root: true})
     return article
   } catch (e) {
     this.$toast.error(e).goAway(3500)
     console.log(e)
   }
 }
- все завернуто
а это принципиально в сторе должно быть?  просто не лучше ли логика одного страницы должно лежать в том же странице
источник

С

Сергей М. in Nuxt.js | Vue SSR
𝔹𝕒𝕙𝕒 𝕂𝕒𝕚𝕪𝕣𝕓𝕖𝕜𝕠𝕧
прочитай про asyncdata и сделай так тогда ошибка исчезнить
async asyncData({store, params, error}) {
      try {
       let article = await store.dispatch('pages/articleDetail', params);
       return {
        article: article
}
     } catch() {
       return {
article: {} или null или []
}
   }
ну тогда будет пустая страница, что еще хуже чем 500 ошибка
источник

С

Сергей М. in Nuxt.js | Vue SSR
𝔹𝕒𝕙𝕒 𝕂𝕒𝕚𝕪𝕣𝕓𝕖𝕜𝕠𝕧
а это принципиально в сторе должно быть?  просто не лучше ли логика одного страницы должно лежать в том же странице
нет, не лучше... хотя конкретно в данном случае, это не принципиально... Просто хряню все экшены отдельно
источник