vue部署后静态文件加载404的解决

yizhihongxing

针对 vue 应用部署后静态文件加载 404 的情况,以下是解决方法的完整攻略。

现象

应用部署后,访问应用的静态文件(如 CSS、JS、图片等)时会出现 404 错误。

原因

原因通常是因为静态资源文件的路径找不到或者没有正确引入。

解决方案

解决该问题,可以采用以下两种方案:

方案一:history 模式

在 Vue Router 中,mode 可以设置为 history 模式来解决静态资源路径问题。在这种模式下,应用的地址会表现为正常的 URL 地址,比如 /about/contact 等。而不使用该模式则 URL 地址会像这样:/#/about/#!about

  1. 配置 Vue Router

router/index.js 中添加如下代码:

import Vue from 'vue';
import Router from 'vue-router';
import HelloWorld from '@/components/HelloWorld.vue';
import About from '@/components/About.vue';
import Contact from '@/components/Contact.vue';

Vue.use(Router);

export default new Router({
  mode: 'history',
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld,
    },
    {
      path: '/about',
      name: 'About',
      component: About,
    },
    {
      path: '/contact',
      name: 'Contact',
      component: Contact,
    },
  ],
});
  1. 在服务器中配置

在服务器端需要配置一下,如果是 nginx 则需要在/nginx/conf/nginx.conf 中添加以下代码:

location / {
    try_files $uri $uri/ /index.html;
}

这里的 try_files 就是尝试访问指定的文件,如果找不到则直接返回 index.html 页面。这避免了 URL 访问时出现 404 错误的情况。

方案二:publicPath

在打包时,可以通过设置 publicPath 来解决静态文件路径的问题。该方法适用于那些不支持 history 模式的服务器或者是处理静态资源的CDN服务器。

在 vue.config.js 中添加以下代码:

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? '/my-app/'
    : '/',
};

这里的 publicPath 就是指定资源文件的基础路径,如上面的 /my-app/ 就是一个网站或者 CDN 路径的基础路径,这个路径就是所有文件路径的前缀。

以上就是 vue 部署后静态文件加载 404 错误的两种解决方案。

示例说明

示例一

该示例是基于 publicPath 方案的,有以下的目录结构:

my-app/
  node_modules/
  src/
    assets/
      logo.png
  public/
    index.html
    favicon.ico

在 vue.config.js 中添加以下代码:

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'
    ? '/my-app/'
    : '/',
};

在 index.html 中的 img 标签里设置相对路径:

<img src="./assets/logo.png" alt="logo">

这里的 publicPath 为开发环境下的根路径 /,而在生产环境下的 publicPath/my-app/,这样就能够正常的加载到静态资源文件了。

示例二

该示例是基于 history 模式的,基本 publicPath 的解决方案一样,只是在路由模式上有所不同。

路由添加方式:

const router = new VueRouter({
  mode: 'history',
  routes: [
    {
      path: '/',
      component: Home,
    },
    {
      path: '/about',
      component: About,
    },
  ],
});

服务器配置(nginx):

location / {
  try_files $uri $uri/ /index.html;
}

以上是两个示例分别使用不同的方案解决 vue 部署后静态文件加载 404 的问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue部署后静态文件加载404的解决 - Python技术站

(0)
上一篇 2023年6月9日
下一篇 2023年6月9日

相关文章

  • Vue封装的可编辑表格插件方法

    下面是详细讲解“Vue封装的可编辑表格插件方法”的完整攻略: 1. 什么是Vue封装的可编辑表格插件方法 Vue封装的可编辑表格插件方法是一种能够快速构建可编辑的表格并支持表格数据绑定的Vue组件方法。这种方法通常会封装为一个组件,里面包含了表格的各种功能,如数据增删改查、分页、排序等,使得开发者可以更加方便地使用表格来展示和操作数据。 2. 如何使用Vue…

    css 2023年6月10日
    00
  • vue实现动态列表尾部添加数据执行动画

    让我来详细讲解一下“vue实现动态列表尾部添加数据执行动画”的完整攻略。 1. 实现思路 动态列表尾部添加数据执行动画的实现思路大致如下: 首先,需要在data中定义一个数组,用于存储列表数据。接下来,在页面上使用v-for指令,循环渲染数组中的数据,展示列表内容。 接着,我们可以使用vue的过渡动画功能,对新添加的数据进行动画处理。当有新数据添加时,可以通…

    css 2023年6月10日
    00
  • 详解CSS经典布局之Sticky footer布局

    下面是“详解CSS经典布局之Sticky footer布局”的完整攻略。 简介 Sticky footer布局是一种常用的网站页面布局方式。它的特点是底部的footer元素始终粘着页面底部,不会因内容高度不足而漂浮在中间或者底部。 实现思路 实现Sticky footer布局的关键在于以下两点: 父元素高度设置为100%。 footer元素使用绝对定位,并将…

    css 2023年6月11日
    00
  • 动态的样式语言less语法详解之混合属性

    动态的样式语言less语法详解之混合属性 在less中,我们可以使用混合属性(Mixin)来定义一组css属性,这组属性可以被重复调用,不仅可以提高代码的复用率,还可以通过传递参数来动态生成样式,从而实现动态的样式。 定义混合属性 在less中,混合属性使用@mixin关键词定义。其语法格式如下: @mixin mixin-name { property1:…

    css 2023年6月9日
    00
  • JS修改css样式style浅谈

    JS修改CSS样式style浅谈 在Web开发中,经常需要使用JavaScript来修改CSS样式,以实现动态效果。本攻略将详细讲解JS修改CSS样式的完整攻略,包括基本概念、属性介绍、注意事项和示例说明。 1. 基本概念 在JavaScript中,可以使用style属性来修改元素的CSS样式。style属性是一个对象,包含了元素的所有CSS样式属性和值。 …

    css 2023年5月18日
    00
  • 详解Sticky Footer 绝对底部的两种套路

    下面是详解Sticky Footer 绝对底部的两种套路的完整攻略。 一、Sticky Footer的概念 在网页设计中,Sticky Footer指的是网页底部一直贴在视口底部,并且在网页内容过短时也不会出现在视口中的一种解决方案。此外,Sticky Footer还需要保证在网页内容过长时,能够让滚动条正常滚动,即不会被遮挡。 二、套路一:用flex实现 …

    css 2023年6月10日
    00
  • javascript css实现三级目录(简单的)

    来介绍一下如何使用Javascript和CSS实现简单的三级目录。 1. 准备工作 在HTML中,首先需要准备一个嵌套的列表结构,用来表示三级目录的层次关系。可以使用无序列表(ul)和有序列表(ol)嵌套的方式来构建,例如: <ul> <li> <a href="#">Item 1</a> …

    css 2023年6月10日
    00
  • Jquery中使用show()与hide()方法动画显示和隐藏图片

    下面是Jquery中使用show()与hide()方法动画显示和隐藏图片的详细攻略: 1. 简介 Jquery是一款前端开发常用的Javascript框架,它封装和简化了Javascript编程的常用功能。其中,show()与hide()是Jquery中常用的方法之一,用来改变元素的可见性是否隐藏。在显示和隐藏图片时,show()和hide()方法都十分实用…

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部