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

yizhihongxing

首先,我们需要理解打包过程中的路由问题。在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日

相关文章

  • 在vue中如何使用Mock.js模拟数据

    在vue中使用Mock.js模拟数据,需要安装mockjs库,然后在vue组件中引入mockjs并编写mock数据接口。下面是具体的步骤: 安装mockjs 可以使用npm或者yarn进行安装: npm install mockjs –save-dev 引入mockjs 在vue组件引入mockjs,并编写mock数据接口,例如: import Mock …

    Vue 2023年5月27日
    00
  • vue中watch的用法汇总

    Vue 中 Watch 的用法汇总 1. Watch 简介 在Vue中,Watch是用于响应和监听数据变化的一个重要特性。通过watch可以检测数据的变化,并且可以在数据变化时做相应的操作,例如更新dom元素、请求接口等。 2. Watch 的使用 2.1 Watch 的基本语法 在 Vue 中添加 Watch 通过在数据对象中定义一个 watch 属性,然…

    Vue 2023年5月27日
    00
  • Vue3+TS+Vite+NaiveUI搭建一个项目骨架实现

    下面我来详细讲解“Vue3+TS+Vite+NaiveUI搭建一个项目骨架实现”的完整攻略。 准备工作 在开始搭建项目骨架之前,我们需要先完成一些准备工作: 确认已安装 Node.js 安装 Vue CLI 4 或更高版本:npm install -g @vue/cli 创建项目:vue create my-project 安装 Vite Vite 是一个新…

    Vue 2023年5月27日
    00
  • 基于vue实现8小时带刻度的时间轴根据当前时间实时定位功能

    下面是基于Vue实现8小时带刻度的时间轴根据当前时间实时定位功能的完整攻略: 1.需求分析 时间轴分为8个小时 时间轴刻度需对应具体时刻,如每小时1个刻度 时间轴需根据当前实际时间进行实时定位,可自动滚动到相应时刻 2. 实现方式 使用Vue框架实现,具体步骤如下: 2.1 创建Vue项目 创建一个新项目,命名为time-axis,安装所需依赖: // 安装…

    Vue 2023年5月28日
    00
  • 详解iOS App中调用AVAudioPlayer播放音频文件的用法

    详解iOS App中调用AVAudioPlayer播放音频文件的用法 在iOS应用中,我们经常需要用到播放音频文件的功能。AVAudioPlayer是iOS中一个非常好用的播放音频文件的类,提供了一系列播放、管理音频、控制播放速率和音量等方法,使得我们能够非常方便的实现音频处理的功能。 1.准备工作 在使用AVAudioPlayer播放音频文件前,需要完成如…

    Vue 2023年5月28日
    00
  • Vue配置环境变量的正确打开方式

    Vue是一种流行的JavaScript前端框架,它提供了许多强大的功能和工具帮助我们在开发前端应用时更加高效和方便。在Vue开发中,我们通常需要使用一些环境变量来配置不同环境的API地址、端口号、代理设置等等。这篇攻略将会为大家详细介绍在Vue中,如何配置环境变量的正确打开方式。 步骤一:在项目根目录下添加.env文件 首先,我们需要在Vue项目的根目录下添…

    Vue 2023年5月28日
    00
  • Vue3中watch监听使用详解

    下面详细讲解Vue3中watch监听的使用方法。 什么是Vue3中的watch监听 watch监听是Vue3的一个新特性,它可以用于观察 Vue 实例数据的变化,执行一些副作用操作。Vue3中watch监听的基本语法如下: <template> <div> {{ message }} </div> </templat…

    Vue 2023年5月29日
    00
  • vue修改对象的属性值后页面不重新渲染的实例

    Vue.js是一个响应式框架,它支持组件化开发,当数据发生改变时,页面会自动更新。但是,在使用Vue.js时有一个问题:当修改对象的属性值后,页面不会重新渲染。这是因为Vue.js检测数据的变化是基于对象的setter方法,而不是对于对象的属性的getter/setter的监听,导致Vue.js无法发现对象属性的修改。因此,我们需要特殊的处理来让Vue.js…

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