首页 > 解决方案 > nuxtServerInit 与 Vuex 导致无限循环 laravel 和 nuxtjs

问题描述

我试图在 nuxtjs 前端、laravel 后端项目中运行几个 axios 调用,nuxtServerInit以便在服务器端调用它们。同时添加这段代码

async nuxtServerInit({commit}) {
  const usercompany = await this.$axios.get('dashboard/getusercompanyfresh');
  console.log(usercompany)
  if(usercompany.data != undefined && usercompany.data !== '') {
    commit('SET_USERCOMPANY', usercompany.data);
  }

 if(usercompany.data != undefined 
    && usercompany.data !== '' 
    && usercompany.data.firstmade != undefined 
    && usercompany.data.firstmade =='candidate'
 ) {
   const processinfo = await this.$axios.get('dashboard/processinfo')
   console.log(processinfo)
   await commit('SET_PROCESSINFO', processinfo.data);
 }

  const response = await this.$axios.get('company/getcache')
  commit('SET_MAINCACHE',response.data);
 
  const themonths = await this.$axios.get('getmonths')
  commit('months', themonths.data);    
  commit('years');
  commit('days');   
});

在我store/actions.js的页面将加载到 localhost 但是当我在我的服务器上构建它时它会进入无限循环。这些调用的结果是一堆 json 和对象,我可以使用 console.log 看到它们,但在我的服务器中,我看到了这个错误,而不是重复,直到我杀死节点进程

错误

 rabter >  WARN  Cannot stringify arbitrary non-POJOs ClientRequest      x
x                              xx rabter >  ERROR  Maximum call stack size exceeded                       x
x                              xx rabter >   at String.replace (<anonymous>)                              x
x                              xx rabter >   at stringifyPrimitive (node_modules/@nuxt/devalue/dist/deva  x
x                              xx rabter >   at stringify (node_modules/@nuxt/devalue/dist/devalue.cjs.j  x
x                              xx rabter >   at node_modules/@nuxt/devalue/dist/devalue.cjs.js:105:79     x
x                              xx rabter >   at Array.map (<anonymous>)                                   x
x                              xx rabter >   at stringify (node_modules/@nuxt/devalue/dist/devalue.cjs.j  x
x                              xx rabter >   at node_modules/@nuxt/devalue/dist/devalue.cjs.js:129:98     x
x                              xx rabter >   at Array.map (<anonymous>)                                   x
x                              xx rabter >   at stringify (node_modules/@nuxt/devalue/dist/devalue.cjs.j  x
x                              xx rabter >   at stringify (node_modules/@nuxt/devalue/dist/devalue.cjs.j

此错误不会出现在本地主机上,并且那里一切正常

标签: laravelvuexserver-side-renderingnuxtjs

解决方案


我对您的版本进行了一些更改,您可以试试这个更新的 nuxtServerInit 函数吗?

  async nuxtServerInit({ commit }, { req }) {
    try {
      return new Promise((resolve, reject) => {
        if (!req) return

        const usercompany = this.$axios.get('dashboard/getusercompanyfresh')
        console.log(usercompany)

        if (usercompany && usercompany.data) {
          commit('SET_USERCOMPANY', usercompany.data)
        }

        if (
          usercompany &&
          usercompany.data &&
          usercompany.data.firstmade &&
          usercompany.data.firstmade === 'candidate'
        ) {
          const processinfo = this.$axios.get('dashboard/processinfo')
          console.log(processinfo)
          commit('SET_PROCESSINFO', processinfo.data)
        }

        const response = this.$axios.get('company/getcache')
        if (response && response.data) {
          commit('SET_MAINCACHE', response.data)
        }

        const themonths = this.$axios.get('getmonths')
        if (themonths && themonths.data) {
          commit('months', themonths.data)
        }
        commit('years')
        commit('days')
        resolve(true)
      })
    } catch (error) {
      console.log(error)
    }
  },

推荐阅读