我现在正在用Nuxt来开发一个网页、并配搭VueX和Axios来呼叫API提取数据。现在正在处理错误页面。
根据官方教学用layout/error.vue成功做出自定义的错误页
并可以使用this.$nuxt.error(".........")来把自定的错误信息扔进错误页。
错的URL也能进错误页
可是万一是在SSR时发生错误(API返回了500)
就一定会跳到预设的错误页面
以下是我的代码
VueX
./store/item.js
import myAxios from 'myAxios.js'
export const actions = {
fetchItems: async ({ commit }) => {
const items = await myAxois.get('https://jsonplaceholder.typicode.com/todos/1')
if(items.data.status === "deleted"){
// 发生错误跳到错误页
// SSR时无法使用$nuxt.error
// throw Error也会跳到预设页
}else{
commit('setItems', items.data)
}
},
Axios
myAxios.js
cpAxois.interceptors.response.use((response) => {
return response
}, (error) => {
const { response } = error
const { status, statusText } = response
if (process.client) {
$nuxt.error({ message: statusText, statusCode: status })
// $nuxt只在客戶端渲染能用
} else {
// $nuxt在SSR時undefined
}
return Promise.reject(error)
})