最近在用nuxt.js做服各端渲染的项目发现了一个问题。比如说一个页面有多个的并发请求,其中只要有一个请求出现问题,那整个页面就出不了。用客户端做渲染的时侯,通常可以给个弹窗,展示下服务端反回的错误信息。
那么问题来了1.在用nuxt的时候怎么才能够尽可能的保证接口出问题时,页面不会完全崩溃。2.如何快速定位错误
最近在用nuxt.js做服各端渲染的项目发现了一个问题。比如说一个页面有多个的并发请求,其中只要有一个请求出现问题,那整个页面就出不了。用客户端做渲染的时侯,通常可以给个弹窗,展示下服务端反回的错误信息。
那么问题来了1.在用nuxt的时候怎么才能够尽可能的保证接口出问题时,页面不会完全崩溃。2.如何快速定位错误
errorCaptured
拦住vue实例中冒泡的error.catch
,要么try catch
,谁让浏览器执行JS的主线程是单线程呢所有的服务端渲染方法(asyncData、fetch ...)都增加异常捕获代码
错误跳转到指定页面或给予提示就好了。
async asyncData({ app, store, redirect }) {
if (process.server) {
const [error, { data }] = await exception(
app.$http().serverGet(store.state.token, '/personal/info'),
redirect
)
if (error) {
return false
}
return {
biz: data
}
})
}
export default function exception(promise, redirect) {
return promise
.then(response => {
if (response && response.code === '000000') {
if (response.data) {
// eslint-disable-next-line
return [{ data, status }, null]
} else {
return [true, null]
}
} else if (response.code === 'SYS002') {
redirect({
path: '/login'
})
} else {
return [null, response]
}
})
.catch(error => {
return [error, { data: null }]
})
}
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
2 回答4.7k 阅读✓ 已解决
4 回答4.3k 阅读✓ 已解决
调试吗?调试的话看看报错就行了吧
线上的话,有个请求挂了就直接去 error 页面好了