Nginx使用vite部署vue3项目 页面刷新404

1 问题描述

最近使用vue3的vite构建了一个新项目,在本地测试时是好好的没有什么问题,但是一发到服务器上刷新页面就会出现404,这样肯定会导致用户体验非常不好,于是我开始翻阅资料,找到几种处理方法

2 原因分析

出现这种情况应该是页面刷新没有找到根路径导致的

3 处理方法

3.1 方法一 使用webHashHsitory

修改router 文件夹下的index 配置文件,将history 方式改为createWebHashHistory ;因为hash方式的页面地址在刷新时只会刷新# 后面的内容,前面会保持不变

import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'

const router = createRouter({
  // 引入正式环境的打包路径
  history: createWebHashHistory(import.meta.env.BASE_URL),
  routes: [
    {
      path: '/',
      name: 'home',
      component: HomeView
    },
  ]
})

export default router

3.2 方法二 修改配置文件

因为我的项目需求,无法使用hash 的方式来解决这个问题,于是只能依然采用H5的history 方式

  • 首先在.env.production 配置文件中配置打包后的起始路径(一般默认路径是 / 可以根据自己的需求配置不同的起始路径)

    # 资源访问路径
    VITE_BASE_PUBLIC_PATH = "/page/hr"
    
  • vite.config.ts 文件中加载打包路径

    import { fileURLToPath, URL } from "node:url";
    
    import { defineConfig, loadEnv } from "vite";
    import vue from "@vitejs/plugin-vue";
    import { ConfigEnv } from "vite";
    import path from "node:path";
    
    // https://vitejs.dev/config/
    export default ({ mode }: ConfigEnv) => {
      // 获取当前环境的资源访问路径
      const basePublicPath: string = loadEnv(
        mode,
        process.cwd()
      ).VITE_BASE_PUBLIC_PATH;
    
      return defineConfig({
        base: basePublicPath,	// 加载打包路径
        plugins: [
          vue(),
        ],
        resolve: {
          alias: {
            "@": fileURLToPath(new URL("./src", import.meta.url)),
          },
        },
      });
    };
    
    
  • 修改服务器上的 nginx.conf 文件

    # HR页面
    location /page/hr{
        alias /page/ez_hr/;
        index index.html;
      # 重点 设置刷新的起始路径,避免出现找不到根路径从而404的问题
        try_files $uri $uri/ /page/hr/index.html;	
    }
    
  • 最后也是最重要的一步,重启 nginx 服务!!直接热启动不一定生效(反正我的没生效)

3.3 升级版本(待验证)

  • 我在stackflow上看到一个说法是 vite 打包本来就有这个问题,但是在 5.0.0-beta.0 这个版本中问题已经修复了,但我用第二种方式已经解决了,这个就没试,有兴趣的朋友可以试一试
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用nginx部署vue项目时,刷新页面或访问路由配置页面时可能会出现404错误。这是因为vue项目属于单页面开发,只有一个index.html文件。解决这个问题很简单,只需要将访问重定向到index.html页面,然后由index.html处理对应的路由跳转。可以通过修改nginx的配置文件来实现。首先,在nginx的配置文件中添加以下代码: ``` location / { try_files $uri $uri/ /index.html; } ``` 这样就可以解决刷新页面时出现404错误的问题。然后,重启nginx服务器使配置生效。这样就完成了nginx部署vue项目并解决刷新404的问题。\[1\]\[3\] #### 引用[.reference_title] - *1* [nginx部署vue项目刷新页面404](https://blog.csdn.net/qq_45029459/article/details/129014641)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Nginx部署Vue项目以及解决刷新页面404问题](https://blog.csdn.net/qq_27985607/article/details/86608392)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [五步用Nginx部署Vue项目及动态路由刷新404问题解决](https://blog.csdn.net/weixin_54218079/article/details/125755795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值