vue项目打包部署后默认路由不正确的解决方案

首先,我们需要理解打包过程中的路由问题。在vue项目中,路由由路由表文件(router/index.js)控制,如果不指定默认路由,就会采用默认的路由配置方式,即会访问localhost:8080/#/,但是在部署后,如果直接访问网站地址,就无法正确渲染网页,因为在服务器中,项目的router.base需要指定为网站地址,而不是默认的localhost:8080地址。

接下来,我们来详细讲解解决方案:

步骤一:配置router/index.js

打开router/index.js文件,在顶部添加以下代码:

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

这个mode和base配置表示使用 HTML5 history 模式(即去掉 URL 中的 #)和基路径,将base设置为process.env.BASE_URL变量,表示是从环境变量中获取网址。

步骤二:在package.json中添加homepage

打开package.json文件,在"scripts"下添加以下代码:

"homepage": "https://example.com"

这个homepage配置表示应用在生产环境中的根地址,如果没有指定router.base时,默认使用这个地址。

步骤三:重新打包

重新运行打包命令,如:npm run build 或者 yarn build。

打包完成后,你会发现在dist目录中,会生成一个名为index.html的文件。

步骤四:手动修改index.html

打开index.html文件,找到以下代码:

<head>
    <!-- ... -->
    <base href="/" />
    <!-- ... -->
</head>

将base href修改为你的网站网址:

<head>
    <!-- ... -->
    <base href="https://example.com/" />
    <!-- ... -->
</head>

这个base href配置表示路由表中的根地址。这样,你的路由就可以正确找到文件了。

示例一:根据实际情况修改baseUrl

假设我的网站地址为https://www.example.com/my-app,那么打开router/index.js文件,可以将base设为process.env.BASE_URL的值:

const router = new Router({
  mode: 'history',
  base: '/my-app/',
  routes: [...]
})

改完后,再重新打包,这样就能部署在正确的目录下。

示例二:使用nginx配置实现路由匹配

在nginx的配置文件中添加以下代码:

location /my-app/ {
    alias /usr/share/nginx/html/;
    try_files $uri $uri/ /my-app/index.html;
}

这个配置表示如果访问/my-app/路径下的文件,则会去nginx配置的文件目录下匹配,如果没有匹配到,就直接重定向到/my-app/index.html,这样就实现了正确的路由匹配。

以上就是“vue项目打包部署后默认路由不正确的解决方案”的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue项目打包部署后默认路由不正确的解决方案 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • Template ref在Vue3中的实现原理详解

    下面是针对 “Template ref在Vue3中的实现原理详解” 的完整攻略。 什么是 Template ref? Template ref 是 Vue 组件中用来获取子组件或 HTML 元素的引用的方式,在 Vue2 中我们可以通过 $refs 对象或 $refs 属性来获取对应的引用。如下所示: <template> <div ref…

    Vue 2023年5月27日
    00
  • VUE.CLI4.0配置多页面入口的实现

    是的,下面我将详细讲解如何使用Vue CLI 4.0配置多页面入口。 1. 安装Vue CLI 4.0 Vue CLI 4.0是Vue官方提供的脚手架工具,可以快速创建Vue项目,并提供了很多有用的功能。首先,我们需要全局安装Vue CLI 4.0: npm install -g @vue/cli 安装完成后,可以使用下面的命令来检查是否安装成功: vue …

    Vue 2023年5月28日
    00
  • 深入理解Vue官方文档梳理之全局API

    我来详细讲解“深入理解Vue官方文档梳理之全局API”的完整攻略,该攻略旨在帮助Vue开发者更深入了解Vue的全局API。下面是详细内容: 概述 在Vue框架中,全局API是Vue内置的一系列功能,我们可以在Vue实例中使用它们,而无需单独引用它们的库。全局API包括一些基础方法和组件,如:Vue.use()、Vue.extend()、Vue.compone…

    Vue 2023年5月28日
    00
  • Vite结合Vue删除指定环境的console.log问题

    以下是关于 “Vite结合Vue删除指定环境的console.log问题”的完整攻略: 1. 背景 在vue项目开发中,为了便于调试,会在代码中使用console.log()输出一些信息。但是在发布正式环境时,这些console.log()输出的信息会影响性能并且不安全。因此,需要在正式环境中删除这些console.log()代码。 2. 解决方案 Vite…

    Vue 2023年5月28日
    00
  • Vue简介、引入、命令式与声明式编程详解

    Vue简介 Vue是一款渐进式的JavaScript框架,由尤雨溪开发。Vue的目标是通过更简单、更快速的方式来构建用户界面,在增强web应用开发效率、降低技术人员的学习成本、并确保高效的性能方面表现出色。 Vue特点: 轻量级框架,代码量小,执行效率高 易于学习和使用,拥有清晰的文档和注重开发体验的社区 渐进式框架,可以逐步使用, 或集成到其他系统中使用 …

    Vue 2023年5月27日
    00
  • 详解Vue文档中几个易忽视部分的剖析

    详解Vue文档中几个易忽视部分的剖析 Vue.js 是一款流行的前端框架,文档非常全面,但是有些内容容易被开发者所忽略或者遗漏。本篇攻略将剖析Vue文档中几个易忽视部分。 模板语法-属性绑定 属性绑定是 Vue 中非常重要的概念,可以让我们快速且简单地将数据渲染到模板中。下面以示例说明: <div v-bind:id="dynamicId&q…

    Vue 2023年5月27日
    00
  • vue 中简单使用mock的示例代码详解

    下面是“vue 中简单使用mock的示例代码详解”的完整攻略。 1、什么是Mock? Mock是一种基于规则自动生成数据模拟的工具,常用于代码调试以及前后端分离开发环境中数据接口的测试。Mock通过配置生成模拟数据,并可以实现前后端分离开发流程中前端提前获取数据模型,更好地完成页面的实现。 2、Mock.js介绍 Mock.js是一款前后端分离开发中常用的模…

    Vue 2023年5月28日
    00
  • vuejs element table 表格添加行,修改,单独删除行,批量删除行操作

    以下是“vuejs element table 表格添加行,修改,单独删除行,批量删除行操作”的攻略。 添加行 要添加行,首先需要在data中定义一个空的数组来存放表格数据。然后,在模板中使用el-table组件和el-table-column组件来渲染表格,并给el-table组件绑定数据源。 接下来,我们可以在模板中添加一个类似“添加行”的按钮,当用户点…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部