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

yizhihongxing

针对“vue部署后静态文件加载404的解决”,我给出了以下完整攻略:

问题描述

在vue应用部署到服务器后,访问页面时静态资源文件(如js、css、img等)出现404错误,该如何解决?

解决步骤

步骤一:修改配置文件

  1. 首先在vue.config.js文件中增加如下代码:

javascript
module.exports = {
publicPath: './'
}

或者修改package.json 文件中的homepage字段如下:

javascript
"homepage": "./"

  1. 如果你使用了vue-cli3来创建Vue项目,那么你需要在打包前加上--mode production参数,即npm run build -- --mode production, 否则publicPath的值会默认为 /, 这样即使正确配置 Apache 或 nginx 反向代理,也会出现404 问题。

  2. 如果publicPath设置为"./" 需要记得在部署后的HTML文件中引入对应的静态资源文件时路径和文件位置应该是相对路径和文件夹。否则部署后会发现资源文件没有找到。

步骤二:配置服务器

以 Nginx 为例,配置 Nginx 静态资源访问:

  1. 使用root指令配置静态文件路径:

```
server {
listen 8080;
server_name localhost;
root /usr/share/nginx/html;

   # serve static files
   location / {
     try_files $uri $uri/ @router;
     index index.html;
   }

   location /static/ {
     alias /usr/share/nginx/html/static/;
   }

   location @router {
     rewrite ^.*$ /index.html last;
   }

}
```

这里的root字段根据Nginx实际目录填写,该目录即为Vue编译后的dist文件夹。

  1. 在Nginx 中,访问静态文件,需要 rewrite URL 到 index.html。因此,还需在 Nginx 配置文件中加入以下内容:

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

这样我们就完成了对静态文件的访问重定向配置。

步骤三:重启服务器

最后的一步是重启 Nginx。在 Ubuntu 系统中,可以使用以下命令重启:

sudo service nginx restart

至此,vue部署后静态文件加载404的问题就完美解决了。

示例说明

示例一:使用GitHub pages进行部署

假设我们已经将Vue项目打包好并上传到GitHub上的仓库demos中。在本地调试的时候可以直接打开dist文件夹中的index.html文件。但是,在github pages上打开网页却发现所有的静态资源都是404,代码如下:

//在 vue.config.js 中进行publicPath设置
module.exports = {
    publicPath: process.env.NODE_ENV === 'production' ? '/demos/' : '/'
}

在以上代码中,我们给publicPath设置了相对路径'/demos/',表示所有的静态资源都放在根目录的demos文件夹中,这样就可以加载到静态资源了。

示例二:使用微服务网关部署

假设我们使用微服务网关来进行部署,为了正常加载静态资源文件,需要对Nginx的配置文件进行修改。假设我们的网站前缀为prefix/path,则需要在Nginx的配置文件中加入以下内容:

server {
    listen       80;
    server_name  localhost;

    location /prefix/path/ {
        proxy_pass http://web-site-name;
        proxy_redirect http:// $scheme://;

        proxy_set_header Host              $host;
        proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP         $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /prefix/path/static/ {
        alias /opt/web-static/;
    }

    location /prefix/path/favicon.ico {
        alias /opt/web-static/favicon.ico;
    }

}

解析

  1. 定义了 http://web-site-name 实际的上游服务器。
  2. 对 resource 的访问路径前缀为 /prefix/path/static/ 时,修改了实际的静态文件的读取路径。
  3. 对于特定静态文件 favicon.ico,对访问路径做了相应修改。
  4. 针对所有以 /prefix/path/ 开始的 URL,转换为 http://web-site-name 上游服务器的相应路径(去掉了 /prefix/path/)。
  5. 修改了 proxy_redirect 以适应上游服务器响应的 301/302 状态代码的 Location 值。

补充

在前缀为prefix/path的情况下,需要将静态资源文件放到网站的根目录的static文件夹中。同时,要注意Vue打包时部署publicPath一定要一致。

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

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

相关文章

  • JAVA定义变量与输出详解

    JAVA定义变量与输出详解 在JAVA编程中,定义变量和输出是非常基础且重要的概念。本攻略将详细讲解如何在JAVA中定义变量以及如何输出变量的值。 定义变量 在JAVA中,可以使用关键字int、double、boolean等来定义不同类型的变量。下面是一些常见的变量类型及其定义方式: int:用于表示整数类型的变量。例如,int age = 25;定义了一个…

    other 2023年8月9日
    00
  • 朱莉娅dataframe的转置

    下面是关于“朱莉娅DataFrame的转置”的完整攻略: 1. 朱莉娅DataFrame 简介 朱莉娅(Julia)是一种性能的动态编程语言,它具有快速的执行速和于使用的语法。DataFrame 是朱莉娅中的一种数据结构,类似于 Python 中的 Pandas DataFrame,用于处理和分析数据。 2. 朱莉娅DataFrame 的转置 DataFra…

    other 2023年5月7日
    00
  • react中axios结合后端实现GET和POST请求方式

    下面我就来详细讲解一下“React中Axios结合后端实现GET和POST请求方式”的完整攻略: 1. 引入Axios 在React项目中进行网络请求,一般需要先引入Axios库。可以使用以下命令来安装Axios: npm install axios 安装完成后,在需要的组件中引入Axios: import axios from "axios&qu…

    other 2023年6月27日
    00
  • 安装tensorflow–解决下载慢的问题

    下面是关于“安装tensorflow–解决下载慢的问题”的完整攻略: 1. 什么是TensorFlow TensorFlow是一个开源的人工智能框架,由Google开发。它可以用于构建和训练各种机器学习模型,包括神经网络、卷积神经网络、循环神经网络等。 2. 安装TensorFlow 安装TensorFlow的步骤如下: 安装Python:TensorFlo…

    other 2023年5月7日
    00
  • oracle取整的几种方法

    当然,我很乐意为您提供有关“Oracle取整的几种方法”的完整攻略。以下是详细的步骤和两个示例: 1. Oracle取整的几种方法 在Oracle中,有多种方法可以对数字进行取整。以下是一些常见的方法: CEIL:向上取整,返回大于或等于指定数字的最小整数。 FLOOR:向下取整,返回小于或等于指定数字的最大整数。 ROUND:四舍五入,返回最接近指定数字的…

    other 2023年5月6日
    00
  • 开放windows服务器端口(以打开端口8080为例)

    开放 Windows 服务器端口是指允许外部设备或者网络连接到服务器上指定的端口。这个过程可以分为两个步骤:第一步是在服务器防火墙上允许该端口的访问,第二步是在服务器的应用程序中打开该端口。 以下是开放 Windows 服务器端口的完整攻略,以打开端口 8080为例: 第一步:在服务器防火墙中允许该端口的访问 打开“控制面板”并进入“Windows Defe…

    other 2023年6月27日
    00
  • vim进入粘贴模式

    vim进入粘贴模式 什么是vim vim是Unix和类Unix系统上的一种文本编辑器,也是Linux发行版中预装的编辑器之一。它具有强大的编辑功能和良好的可定制性,可以用于编写各种类型的文本文件,例如代码、配置文件、Markdown文档等。 什么是粘贴模式 在使用vim编辑器过程中,有时候我们需要从其他应用程序复制文本粘贴到vim编辑器中。但是,由于vim编…

    其他 2023年3月29日
    00
  • vue开发者工具下载

    Vue开发者工具下载 Vue是一种流行的JavaScript框架,可用于构建大型的单页应用。在开发Vue应用过程中,Vue开发者工具是一个非常实用的工具,它可以帮助开发者进行调试和性能优化等工作。在本篇文章中,我们将介绍如何下载和安装Vue开发者工具。 下载Vue开发者工具 Vue开发者工具可以在官方网站上免费下载,官方网站的地址是 https://chro…

    其他 2023年3月28日
    00
合作推广
合作推广
分享本页
返回顶部