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日

相关文章

  • 10分钟快速上手VueRouter4.x教程

    10分钟快速上手VueRouter4.x教程: VueRouter是Vue.js官方的路由管理器,用于处理单页应用程序的导航,它可以帮助我们在Web应用程序中导航和管理视图,并且也可以控制浏览器的前进和后退。VueRouter可以非常快速地搭建起一个SPA应用,通过本教程,您可以在10分钟内了解如何在Vue 4.x项目中使用VueRouter。 安装vue-…

    Vue 2023年5月27日
    00
  • vue3渲染函数(h函数)的变更剖析

    文本格式规范: 标题1 标题2 标题3 列表1 列表2 代码块: //这里写代码 在Vue3中,渲染函数(h函数)的变更是非常重要的一个特性,可以让我们更加方便、灵活地构建组件和页面。下面对这个变更做出详细说明。 Vue3中h函数变更的重要性 在Vue2中,当我们需要编写组件的渲染函数时,需要手写模板。虽然利用Vue模板的语法可以让编写模板变得更加便捷,但还…

    Vue 2023年5月28日
    00
  • Vue之自定义事件内容分发详解

    Vue之自定义事件内容分发详解 Vue.js允许我们使用自定义事件来在组件之间传递数据。自定义事件需要发出方在适当的时候触发事件,接收方在实例中监听对应的事件。Vue.js给我们提供了$emit和$on方法来实现自定义事件。 自定义事件的分发可以使用一般的事件模型,也可以使用特殊的$emit方法来进行分发,让每个组件都有机会响应这个事件。 实现自定义事件 V…

    Vue 2023年5月29日
    00
  • 一起写一个即插即用的Vue Loading插件实现

    下面是“一起写一个即插即用的Vue Loading插件实现”的完整攻略。 确定插件的使用方式和效果 首先要确定我们的插件要如何使用以及要实现的效果。在这个过程中,需要考虑以下几个方面: 插件的使用方式:Vue插件可以通过 Vue.use() 方法进行安装,因此我们需要确定插件的安装方式和参数。 插件的效果:我们的Vue Loading插件需要实现的效果是,在…

    Vue 2023年5月29日
    00
  • vue+springboot+element+vue-resource实现文件上传教程

    下面是详细的“vue+springboot+element+vue-resource实现文件上传教程”的完整攻略: 1. 前端实现 1.1. 安装vue-resource npm install vue-resource –save 1.2. 引入element-ui 并引入element-ui中的el-upload组件来实现文件上传功能 import {…

    Vue 2023年5月28日
    00
  • vue-cli4.0多环境配置变量与模式详解

    下面就为大家详细讲解“vue-cli4.0多环境配置变量与模式详解”的完整攻略。 1. Vue-cli4.0多环境 1.1 什么是多环境? 在Vue开发中,我们会根据不同的环境(开发环境、测试环境、生产环境等)来区分不同的代码逻辑,比如可以使用不同的API服务。因此,我们需要进行多环境的配置。 1.2 多环境配置方法 Vue-cli4.0对于多环境配置提供了…

    Vue 2023年5月28日
    00
  • Vue2响应式系统介绍

    Vue2响应式系统介绍 Vue2的响应式系统是Vue2核心功能之一,它是通过数据劫持和依赖收集来实现的。这种实现方式使得我们不需要手动去操作DOM,只需要操作数据就可以达到更新页面的目的。下面我将详细介绍Vue2响应式系统的实现原理和使用方法。 数据劫持 Vue2的响应式系统是通过数据劫持来实现的。当我们改变Vue实例中的某个数据时,Vue2会自动检测到这个…

    Vue 2023年5月28日
    00
  • Vue使用watch监听数组或对象

    当我们想要监听Vue实例中的属性变化时,我们往往会使用watch来完成,这是Vue提供的强大特性之一。但是,当我们需要监听Vue实例中的数组或对象的变化时,watch就会显得有些无力了。那么,如何使用watch来监听数组和对象的变化呢?在本文中,我将详细讲解Vue如何使用watch监听数组或对象。 监听数组 当我们需要监听一个数组时,Vue提供了一个特殊的方…

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