nuxtjs 自定义服务端错误页面 Server error page
原文链接:https://blog.jijian.link/2020-12-03/nuxtjs-server-error-page/
当 nuxt 项目在生产环境运行时,如果服务端运行出错,比如 asyncData 方中出错时候,会抛出如下错误页面:

虽然官网提供了一个新增 /layouts/error.vue 页面组件的方法自定义错误页面。
但是此错误页面仅用于浏览器端错误抛出时候使用,比如代码在浏览器端报错时候会进入此页面,服务端报错还是会进入上面截图所示的 Server error 页面。
官方文档并没有提到如何自定义 Server error 页面,搜索了下 github 仓库和 issues ,大概找了以下两种方式。
测试错误页面
pages 目录新增 error.vue
<template>
<div />
</template>
<script>
export default {
asyncData () {
throw new Error('error');
},
};
</script>
执行生产环境命令 npm run build && npm start ,浏览器访问 localhost:3000/error,就会看到最开始截图所示的错误页面了。
方法一:修改页面中的文字
官方源码中有这么一部分代码:
export default () => ({
loading: 'Loading...',
error_404: 'This page could not be found',
server_error: 'Server error',
nuxtjs: 'Nuxt',
back_to_home: 'Back to the home page',
server_error_details:
'An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.',
client_error: 'Error',
client_error_details:
'An error occurred while rendering the page. Check developer tools console for details.'
})
此处的配置信息可以通过 nuxt.config.js 修改,如下所示:
const config = {
// ...
messages: {
server_error: '500',
server_error_details: '服务器内部错误',
},
// ...
};
export default config;
此方法仅用于错误页面上的文字修改,并不能完全修改页面样式!
方法二:完全自定义错误页面
不知道是不是官方文档故意不添加此方法,还是他们完全忘记了有这么一回事,此方法是通过 issues 找到的。
项目目录新增 app/views/error.html, app 目录与 pages 目录同级。内容可以复制 github 的官方源码:
<!DOCTYPE html>
<html>
<head>
<title><%= messages.server_error %></title>
<meta charset="utf-8">
<meta content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no" name=viewport>
<style>
.__nuxt-error-page{padding: 1rem;background:#f7f8fb;color:#47494e;text-align:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;font-family:sans-serif;font-weight:100!important;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;position:absolute;top:0;left:0;right:0;bottom:0}.__nuxt-error-page .error{max-width:450px}.__nuxt-error-page .title{font-size:24px;font-size:1.5rem;margin-top:15px;color:#47494e;margin-bottom:8px}.__nuxt-error-page .description{color:#7f828b;line-height:21px;margin-bottom:10px}.__nuxt-error-page a{color:#7f828b!important;text-decoration:none}.__nuxt-error-page .logo{position:fixed;left:12px;bottom:12px}
</style>
</head>
<body>
<div class="__nuxt-error-page">
<div class="error">
<svg xmlns="http://www.w3.org/2000/svg" width="90" height="90" fill="#DBE1EC" viewBox="0 0 48 48"><path d="M22 30h4v4h-4zm0-16h4v12h-4zm1.99-10C12.94 4 4 12.95 4 24s8.94 20 19.99 20S44 35.05 44 24 35.04 4 23.99 4zM24 40c-8.84 0-16-7.16-16-16S15.16 8 24 8s16 7.16 16 16-7.16 16-16 16z"/></svg>
<div class="title"><%= messages.server_error %></div>
<div class="description"><% if (debug) { %>{{ message }}<% } else { %><%= messages.server_error_details %><% } %></div>
</div>
<div class="logo">
<a href="https://nuxtjs.org" target="_blank" rel="noopener"><%= messages.nuxtjs %></a>
</div>
</div>
</body>
</html>
完全可以删除以上所有内容,自己写一个自定义的 html 页面来呈现错误。
重新编译运行 npm run build && npm start,就可以看到自定义的服务端错误页面了。
其他
方法二不仅可以修改 error.html ,还可以修改 app.template.html,虽然官网提供根目录新建 app.html 方法修改模版,但为了统一路径,还是用方法二比较合理。
大概 views 中的其他文件也可以通过此方法修改,暂未测试。
nuxtjs 自定义服务端错误页面 Server error page的更多相关文章
- jQuery MiniUI开发系列之:Ajax处理超时、服务端错误
MiniUI所有组件的ajax交互,均使用标准.成熟的jQuery.ajax. 依赖于jquery ajax组件的完善性,我们可以拦截住每一次ajax请求处理. 比如,拦截ajax返回数据前,判断返回 ...
- JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫
JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接 ...
- [并发并行]_[线程模型]_[Pthread线程使用模型之三 客户端/服务端模型(Client/Server]
Pthread线程使用模型之三 客户端/服务端模型(Client/Server) 场景 1.在客户端/服务端模型时,客户端向服务端请求一些数据集的操作. 服务端执行执行操作独立的(多进程或跨网络)– ...
- 前端错误提示whitelabel error page
1:错误提示whitelabel error page:需要定义一个error.html ,否则提示如图
- [UE4]如何编译部署独立专用服务端(Standalone Dedicated Server)
这是论坛上对UE服务端功能的回答,意思是UE4提供了网游服务端所具备的特性,包括位移修正.物理碰撞检测.这些特性不是UE4才加入,早期UE版本就有了. https://answers.unrealen ...
- Nuxtjs实现服务端渲染和静态化站点
本文将介绍如何使用Nuxtjs对vue项目进行ssr和静态化处理. Nuxtjs简单介绍 首先,我们简单了解下Nuxtjs框架,Nuxt.js是一个基于Vue的通用框架,主要用于解决Vue项目的服务端 ...
- asp.net mvc输出自定义404等错误页面,非302跳转。
朋友问到一个问题,如何输出自定义错误页面,不使用302跳转.当前页面地址不能改变. 还要执行一些代码等,生成一些错误信息,方便用户提交反馈. 500错误,mvc框架已经有现成解决方法: filters ...
- asp.net mvc输出自定义404等错误页面,非302跳转
朋友问到一个问题,如何输出自定义错误页面,不使用302跳转.当前页面地址不能改变. 还要执行一些代码等,生成一些错误信息,方便用户提交反馈. 500错误,mvc框架已经有现成解决方法: filte ...
- CentOS6.5下安装远程桌面服务端软件VNC Server
VNC 使您能够远程訪问和控制您的计算机从还有一计算机或移动设备上,不管你在世界的不论什么地方. 常见的使用情形,包含给同事和朋友提供桌面支持.远程管理您的服务器. 将 VNC Server部署到您想 ...
- zabbix 服务端安装(server)
zabbix版本:Zabbix 2.2 LTS 备注:Linux下安装zabbix需要有LAMP或者LNMP运行环境 准备篇: 一.Web环境:Nginx+MySQL+PHP CentOS 7.0编译 ...
随机推荐
- rsync+ssh同步备份文件
定期对web代码或重要的文件做同步异地服务器备份,防止服务器故障严重磁盘损坏时文件丢失的问题. 备份服务器:192.168.200.134 目标服务器:192.168.201.65 rsync同步命令 ...
- 【转载】Netty堆外内存泄漏排查
https://www.imooc.com/article/298943 上篇文章介绍了Netty内存模型原理,由于Netty在使用不当会导致堆外内存泄漏,网上关于这方面的资料比较少,所以写下这篇文章 ...
- Qt/C++入门基础学习001-绘图基础
这一节介绍 Qt 的绘图基础知识,我们都知道,Qt 里绘图使用的是 QPainter,但是首先需要弄明白:在什么上绘图和在哪里绘图,然后才是怎么绘图,我们就围绕这几个问题来展开. 在什么上绘图 The ...
- Qt编写物联网管理平台31-用户权限管理
一.前言 随着需求的不断变化,功能的增多,在用户信息这块,除了需要用户登录退出验证以外,还需要有个简单的用户权限逻辑处理,比如限定某些用户只有查看权限,没有删除记录.清空记录.系统设置的权限,与之相对 ...
- 清除 TortoiseSVN已存储的连接URL地址
Eclipse 清除 SVN 的 URL 历史记录1.关闭 Eclipse2.进入 工程目录 \.metadata\.plugins\org.tigris.subversion.subclipse.c ...
- 使用Visual Studio Code进行前端开发并运行前端页面时提示:npm WARN Local package.json exists, but node_modules missing, did you mean to install?
使用Visual Studio Code进行前端开发并运行前端页面时提示如下错误: npm WARN Local package.json exists, but node_modules missi ...
- 即时通讯技术文集(第7期):长连接网关、P2P等 [共10篇]
为了更好地分类阅读52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第7 期. [- 1 -] 长连接网关技术专题(二):知乎千万级并发的高性能长连接网关技术实践 [ ...
- 深入剖析数据删除操作:DELETE 语句的使用与管理实践
title: 深入剖析数据删除操作:DELETE 语句的使用与管理实践 date: 2025/1/8 updated: 2025/1/8 author: cmdragon excerpt: 数据删除( ...
- HashMap中哈希表的长度为什么需要是2的幂次方以及怎么实现
看过HashMap源码的人可能都用印象,就是hashMap的哈希表长度可以由自己指定也可以不指定使用默认长度,但是如果在了解或者发现tableSizeFor方法的话,你就会知道此方法会改变我们的输入长 ...
- G1原理—4.G1垃圾回收的过程之Young GC
大纲 1.G1的YGC过程 2.YGC并行处理阶段的过程 3.YGC串行处理阶段的过程(一) 4.YGC串行处理阶段的过程(二) 5.整个YGC的执行流程总结 1.G1的YGC过程 (1)YGC相关的 ...