laravel - 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
此错误不会出现在本地主机上,并且那里一切正常
解决方案
我对您的版本进行了一些更改,您可以试试这个更新的 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)
}
},
推荐阅读
- xcode - SwiftUI 命名类同名
- spring-boot - 持久实体“产品”应具有主键
- python - “‘builtin_function_or_method’对象没有属性‘’
- javascript - ajax 中的 ajax 和 NEED 将值返回到第一个 ajax
- reactjs - 如何在 React 应用程序中向 API 发出超过 100 万个请求?
- python - 如何在多元模型中获得平均 val_loss 和 val_accuracy?
- c++ - 控制到达非空函数clang(-Wreturn-type
- c++ - 我是编程新手
- javascript - 如何将多个 mobx 观察者状态作为参数传递给函数
- python - 如何以 500 行的块将数据框导出到 csv