在我正在开发的应用中,我们经常但始终在开发服务器上收到非常难看的NuxtServerError。
此NuxtServerError的状态码为500,但错误消息指出它是401错误。
堆栈跟踪仅显示一个框架,这完全无济于事(请参见屏幕截图)。
清除本地存储,会话存储和Cookies会消除此错误,仅是在其他时间再次发生。
由于我不确定是什么原因导致了此问题,因此我很努力地重现此问题,更不用说找到解决此问题的方法了。
我们已经onError
在axios
插件中定义了一个回调,该回调可以捕获401个错误,但是似乎没有在这里被捕获……可能是因为它发生在加载插件之前?
再次,Nuxt确实确实无法帮助我们找出原因!
export default ({ $axios, nuxtState, app }) => {
let logoutPage;
if (process.client) {
$axios.setBaseURL(nuxtState.env.API_URL);
logoutPage = `https://${nuxtState.env.AUTH0_DOMAIN}/v2/logout`;
}
$axios.onError((e) => {
if ([401, 403].includes(parseInt(e.response && e.response.status, 10))) {
return app.$auth.logout().then(() => {
if (process.client) {
// Use JSON.parse(atob(feedback)) to decode on login page
const returnTo = `${window.location.origin}/login?feedback=${btoa(JSON.stringify({
error: e.response.status,
error_description: 'Session expired. Please log in again to acces the portal.',
}))}`;
window.location = `${logoutPage}?returnTo=${returnTo}`;
}
});
}
return Promise.reject(e);
});
};