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日

相关文章

  • 详解打造 Vue.js 可复用组件

    详解打造 Vue.js 可复用组件 一、组件化思想 在 Vue.js 中,组件就是一个可完全自包含的模块化单元。可以将组件拆分成更小的组件,以共享和复用。使用组件开发可以提升开发效率和代码可维护性,同时提高代码的重用性。 二、组件的基本结构 一个典型的 Vue 组件通常分为三大块: template:组件的 HTML 模版 script:组件的逻辑代码,可以…

    css 2023年6月11日
    00
  • JQuery的加载和选择器用法简单示例

    下面是关于“JQuery的加载和选择器用法简单示例”的完整攻略。 JQuery的加载 JQuery是一款JavaScript库,主要用于简化DOM操作、事件处理、动画效果等方面的开发。要使用JQuery,需要通过以下两种方式之一来加载: 方式一:从CDN加载JQuery JQuery可以从CDN(内容分发网络)加载,CDN具有内容分发、访问速度快等特点。以下…

    css 2023年6月10日
    00
  • 详解CSS 怪异盒模型和标准盒模型

    详解CSS 怪异盒模型和标准盒模型 盒模型基础知识 CSS的盒模型是用来解释HTML文档中元素的布局的基本概念。任何元素都被认为是一个盒子,盒子由四个部分组成:外边距(margin)、边框(border)、内边距(padding)和内容(content)。 盒子的宽度和高度是由这四个部分的大小及其组成顺序来定义的。 在CSS标准之前,盒模型存在两种不同的模型…

    css 2023年6月10日
    00
  • webpack里使用jquery.mCustomScrollbar插件的方法

    当在webpack中引入jquery.mCustomScrollbar插件时,需要进行一些特殊处理。以下是详细的步骤: 1. 安装jQuery和jQuery.mCustomScrollbar插件 首先,在项目中安装需要使用到的jQuery库和jQuery.mCustomScrollbar插件。可以通过npm安装,执行以下命令: npm install jqu…

    css 2023年6月10日
    00
  • 网页制作经验分享:干净简洁的网页列表代码

    网页列表是网页设计中常用的元素之一,它可以用于展示文章、产品、服务等内容。干净简洁的网页列表可以提高用户体验和页面加载速度,下面是网页制作经验分享:干净简洁的网页列表代码的完整攻略,包括基本概念、使用方法、注意事项和示例说明。 1. 基本概念 网页列表是一种常用的网页元素,它可以用于展示文章、产品、服务等内容。网页列表通常包括标题、摘要、图片等信息,可以通过…

    css 2023年5月18日
    00
  • 微信小程序实战之网易云音乐歌曲详情页实现代码

    标题:微信小程序实战之网易云音乐歌曲详情页实现代码攻略 介绍:本攻略将带领读者实现微信小程序版网易云音乐歌曲详情页,在本攻略中,我们将介绍如何创建一个小程序、如何组织页面结构和如何实现歌曲详情页的布局和功能。 创建一个新的小程序 首先,打开微信小程序开发者工具,选择创建一个新的小程序项目,填写 appID 和项目名称。(这里我就不放截图了) 组织页面结构 接…

    css 2023年6月10日
    00
  • 代码精简的可以实现元素圆角的js函数

    要实现圆角元素,有多种方法可以用来操作CSS样式或直接操作DOM。下面提供一种使用JavaScript语言编写的函数,可以实现元素的圆角和代码精简。 函数说明 本文演示的是一段JS函数,这个函数可以为一个指定的DOM元素设置圆角。该函数的名称为 roundCorner, 具有以下特点: 采用ES6语法,使用了较新的特性,比如箭头函数等。 支持圆角大小自定义,…

    css 2023年6月10日
    00
  • jQuery实现可兼容IE6的遮罩功能详解

    下面我将详细讲解“jQuery实现可兼容IE6的遮罩功能详解”的完整攻略。 前言 随着浏览器的升级发展,IE6已经逐渐退出了舞台,但是在一些老旧的系统中,仍然需要兼容IE6浏览器。那么如何使用jQuery实现可兼容IE6的遮罩功能呢?下面我们就来详细讲解。 步骤一:加载jQuery库文件 在使用jQuery之前,我们需要先加载jQuery的库文件。如果无法访…

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