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

针对 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日

相关文章

  • CSS伪元素 CSS:before CSS伪元素(Pseudo Element):after与:before

    CSS伪元素是指用于在元素的前面或者后面插入虚拟元素,以实现更为灵活的样式效果的一种技术。在CSS中,伪元素通常使用“:before” 和 “:after” 来表示前后虚拟元素。 CSS伪元素:before 基础语法 selector::before { content: ""; display: block; } selector:选择…

    css 2023年6月10日
    00
  • 萌新的HTML5 入门指南

    “萌新的HTML5 入门指南”完整攻略 HTML5 简介 HTML5 是超文本标记语言的第五个版本,是 Web 标准的一部分,主要应用于客户端 Web 应用程序的开发。相比于前几个版本,HTML5 增加了一些新特性,如语义化标签、表单控件、多媒体元素等。 HTML5基本结构 HTML5 的基本结构如下所示: <!DOCTYPE html> &lt…

    css 2023年6月11日
    00
  • 一个css与js结合的下拉菜单支持主流浏览器

    实现一个下拉菜单可以使用CSS和JavaScript相结合的方法,同时支持主流浏览器的话,可以按以下步骤进行: 第一步:HTML 结构设计 首先,我们需要设计一下 HTML 结构,这里我们使用一个简单的无序列表的结构,每个子菜单项都是一个列表项 li,其中标题部分是一个带有子菜单的 a 标签,子菜单则将放置在一个 div 中: <ul class=&q…

    css 2023年6月10日
    00
  • angular.element方法汇总

    “angular.element方法汇总”是一个介绍AngularJS中angular.element对象的各种方法的攻略,下面将逐一讲解这些方法。 angular.element(element) 该方法接受一个参数element,可以是一个CSS选择器,也可以直接传入一个DOM元素对象,返回的是一个jQuery或JQLite对象。例如: angular.…

    css 2023年6月9日
    00
  • GoJs图形绘图模板Shape示例详解

    以下是关于“GoJs图形绘图模板Shape示例详解”的攻略。 什么是GoJs图形绘图模板Shape GoJs图形绘图模板Shape是一个JavaScript图形库,它可以用于创建各种可交互的图形,包括流程图、组织结构图、网络拓扑图等。 Shape模板示例1 下面我们来看一个GoJs Shape模板的示例,该示例用于创建带有箭头的线条。首先,我们需要定义一个S…

    css 2023年6月10日
    00
  • 链接伪类(:hover)CSS背景图片有闪动BUG的解决方法

    CSS中的链接伪类:hover可以让当鼠标悬停在链接上时改变链接的外观。然而,当我们将背景图片应用于链接,并使用:hover来改变背景图片时,有可能会出现背景图片闪烁的问题。接下来,我们给出两个示例,演示这个问题以及如何解决它。 问题示例 以下示例HTML代码中有两个链接,每个链接都有自己的背景图片,并在:hover状态下改变背景图片。但是,当鼠标移动到链接…

    css 2023年6月9日
    00
  • 表格里使用text-overflow后不能隐藏超出的文本的解决方法

    表格中使用 text-overflow 属性可以限制表格单元格中文本的显示。当单元格中文本过多时,可以使用 text-overflow: ellipsis 属性让文本在末尾显示省略号,从而提供更好的用户体验。 然而,某些情况下,text-overflow 属性可能无法成功隐藏超出的文本。这种情况通常出现在单元格中存在其他属性(如 white-space)时,…

    css 2023年6月10日
    00
  • CSS框架的利与弊(下)

    以下是详细讲解“CSS框架的利与弊(下)”的完整攻略: 什么是CSS框架 CSS框架是一种前端开发工具,它提供了一系列的CSS样式和布局模板,方便开发者快速的搭建网站及应用程序的UI界面。一般而言,CSS框架包括了CSS的基本样式和一些常用的组件,比如按钮、表格等等。 CSS框架的利与弊 利 快速开发:CSS框架提供了通用的样式和布局模板,使得开发者不必在每…

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