37 lines
697 B
TypeScript
37 lines
697 B
TypeScript
import { Plugin } from '@nuxt/types'
|
|
|
|
const plugin: Plugin = ({ $axios, error }) => {
|
|
$axios.defaults.baseURL =
|
|
typeof location !== 'undefined'
|
|
? location.origin
|
|
: `http://localhost:${process.env.SERVER_PORT}`
|
|
|
|
$axios.interceptors.response.use(
|
|
(r) => {
|
|
if (r.data?.error) {
|
|
error({
|
|
statusCode: r.status,
|
|
message: r.data.error,
|
|
})
|
|
throw new Error(r.data.error)
|
|
}
|
|
|
|
return r
|
|
},
|
|
(err) => {
|
|
if (process.static) {
|
|
return
|
|
}
|
|
|
|
error({
|
|
statusCode: err.response.status,
|
|
message: err.toJSON(),
|
|
})
|
|
|
|
return Promise.reject(err)
|
|
}
|
|
)
|
|
}
|
|
|
|
export default plugin
|