uniapp 如何配置404页面实现自定义错误页
在 uniapp 里怎么配置 404 页面?我自己尝试在 pages.json 里加了 404 路径,但访问不存在的页面还是会跳转到首页,而不是显示自定义的错误页面。有没有完整的配置方法或者示例代码?
        
          2 回复
        
      
      
        在 pages.json 中添加以下配置:
{
  "globalStyle": {
    "navigationBarTitleText": "App",
    "enablePullDownRefresh": false
  },
  "pages": [
    // 你的页面路由
  ],
  "condition": {
    "current": -1,
    "list": []
  },
  "subPackages": [],
  "preloadRule": {},
  "tabBar": {},
  "fallback": {
    "404": "/pages/404/404"
  }
}
创建 /pages/404/404.vue 页面文件即可。
在 UniApp 中配置 404 页面(自定义错误页)主要通过以下步骤实现,适用于 H5 和部分小程序平台(如微信小程序):
1. H5 平台配置
在 pages.json 中添加错误页路由:
{
  "pages": [
    // ... 其他页面
    {
      "path": "pages/error/404",
      "style": {
        "navigationBarTitleText": "页面不存在"
      }
    }
  ],
  "h5": {
    "devServer": { /* 开发环境配置 */ },
    "router": {
      "mode": "history",
      "base": "./",
      "errorRoute": "/pages/error/404" // 指定 404 页面路径
    }
  }
}
2. 创建 404 页面
在 pages/error/404.vue 中编写自定义内容:
<template>
  <view class="container">
    <text>页面不存在,请检查网址或返回首页</text>
    <button @click="goHome">返回首页</button>
  </view>
</template>
<script>
export default {
  methods: {
    goHome() {
      uni.reLaunch({ url: '/' }); // 跳转到首页
    }
  }
}
</script>
3. 小程序平台配置
- 微信小程序:在 app.json中配置(需单独编译到小程序项目):{ "pages": [ "pages/error/404" ], "entryPagePath": "pages/index/index", "fallback": { "404": "pages/error/404" // 微信小程序 fallback 配置 } }
- 其他小程序:部分平台不支持原生 404 配置,需通过路由拦截实现。
4. 路由拦截(通用方案)
在 App.vue 的 onLaunch 或全局路由守卫中监听错误:
// 在 App.vue 中
onLaunch() {
  // 监听路由失败事件(H5)
  uni.addInterceptor('navigateTo', {
    fail(err) {
      if (err.errMsg.includes('fail page not found')) {
        uni.redirectTo({ url: '/pages/error/404' });
      }
    }
  });
}
注意事项:
- 平台差异:H5 可直接通过 router.errorRoute配置,小程序需依赖平台支持。
- 路径一致性:确保配置的 404 页面路径与实际文件路径匹配。
- 测试方法:在 H5 中访问不存在的路由(如 /invalid)触发跳转。
通过以上配置,即可在 UniApp 中实现自定义 404 错误页。
 
        
       
                     
                   
                    

