webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)

yizhihongxing

下面是详细讲解“webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)”的完整攻略。

问题背景

当我们使用webpack打包vue项目时,生成的js、css、图片等静态资源文件可能会存在404的问题,这是由于打包后资源文件的路径问题所导致的。

具体解决步骤

接下来,介绍具体的解决步骤,包括以下几个方面:

步骤1:检查publicPath

在webpack的配置文件中,publicPath参数代表资源文件的引用路径,可以使用相对路径或绝对路径;相对路径是以打包后html的访问路径为基准的路径,应用在于静态资源引入路径与打包后html的相对路径关系一致;绝对路径则是以服务器根目录为基准的路径。所以,在使用时需要根据实际情况进行配置。

比如,我们可以在webpack.config.js配置文件中进行如下配置:

module.exports = {
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'js/[name].[contenthash].js',
    publicPath: '/'
  },
  ...
}

步骤2:图片等资源文件的路径问题

在vue项目中,我们通常使用vue-cli-plugin-style-resources-loader去在每个vue文件中引入scss样式文件,需要用到webpack的url-loader或者file-loader解析图片等资源文件,如果这些资源文件路径不对,同样会导致出现404的问题。

方式1:使用require引入图片

使用require引入图片文件,可以保证照片文件路径是正确的。比如:

<template>
  <div>
    <img :src="require('../assets/logo.png')">
  </div>
</template>

方式2:在js文件中引入图片

在js文件中引入图片,并把图片赋值给组件的data属性即可。

// 导入图片
import imgSrc from '@/assets/images/logo.png'

export default {
  data() {
    return {
      imgSrc: imgSrc
    }
  }
}

步骤3:优化打包后文件的目录结构

打包后生成的文件的目录结构可以优化,减少不必要的文件夹层级,这样可以更方便地访问静态资源文件。

我们可以通过在output中添加如下两个参数实现:

module.exports = {
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: 'js/[name].[contenthash].js',
    publicPath: '/',
    // 下面两个参数是为了优化打包后的文件目录结构
    assetModuleFilename: 'images/[name].[contenthash][ext][query]',
    chunkFilename: 'js/[name].[contenthash].js'
  },
  ...
}

比如,我们在开发时采用了如下代码引入图片:

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

通过以上配置,logo.png打包后会被放到dist/images文件夹下,同时,index.html中的图片引用路径会自动改为:

<img src="../images/logo.c5d2724a8d1ff9c726f7.png">

示例说明

下面以两个具体的场景为例,进一步说明解决方法。

示例1:在本地开发时图片加载正常,但是打包后图片404

检查一下打包后的index.html中的图片引用的路径是否正确。如果不正确,检查webpack配置文件中的publicPath是否配置正确,可能需要把publicPath修改为相对路径。

module.exports = {
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].[chunkhash].js',
    publicPath: './'
  }
}

示例2:在打包后部署到服务器上时发现页面显示不正常

如果是前端工程师部署后发现资源文件无法加载,但是自己开发时并没有发现这个问题,可以检查一下静态文件加载的路径,是否有走WEB服务器,如果不是,则需要在配置文件nginx中添加一下静态文件的路径。

比如,在nginx中添加如下代码:

location ^~ /static/ {
        alias /data/image_static/YourProjectName/static/;
}

其中,/data/image_static/为图片存放路径,YourProjectName为项目名称。

这样,就可以解决静态资源文件报404的问题了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇) - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • vue+element项目中过滤输入框特殊字符小结

    首先我们需要理解输入框中特殊字符的问题。通常情况下,我们需要对用户输入内容进行一定的限制和过滤,特别是输入框中的一些特殊字符,比如一些标点符号、空格等,可能会影响我们的业务逻辑。因此,在vue+element项目中,如何过滤输入框中的特殊字符,成为了我们需要解决的问题。 下面我们就来具体讲解一下如何实现。 步骤一、准备工作 首先,我们需要在项目中引入loda…

    Vue 2023年5月27日
    00
  • 详解IDEA社区版(Community)和付费版(UItimate)的区别

    详解IDEA社区版和付费版的区别 介绍 IntelliJ IDEA是一款功能强大的Java集成开发工具(IDE)。它有两个版本:社区版和付费版。社区版是免费的,而付费版有更多的功能和增强的特性。 社区版和付费版的主要区别 功能 付费版具有比社区版更高级的功能。例如,付费版包括对Web和企业开发的更好支持,包括Java、Scala、Kotlin和JavaScr…

    Vue 2023年5月28日
    00
  • 详解vue项目打包步骤

    下面是详解Vue项目打包步骤的完整攻略: 简介 在开发 Vue.js 项目的过程中,我们需要将代码打包并将它们部署到服务器上。Vue.js 提供了一些工具来帮助我们完成打包流程,并且支持多种打包方式,包括将整个项目打包成一个文件或将项目中的组件打包成单独的文件。 打包步骤 Vue.js 项目的打包流程大致分为以下几步: 1. 安装 Vue CLI Vue C…

    Vue 2023年5月28日
    00
  • vue跨域问题:Access to XMLHttpRequest at‘httplocalhost解决

    跨域问题指的是在同源策略下,浏览器禁止向不同源地址发送请求,这是为了保证客户端数据的安全性。而Vue.js作为常用的前端框架,在与后台服务进行交互时,就需要面对跨域问题。 下面,我们就来详细讲解一下“Vue跨域问题:Access to XMLHttpRequest at ‘http://localhost’解决”的完整攻略。 什么是跨域问题 跨域问题是浏览器…

    Vue 2023年5月27日
    00
  • Vue Axios异步与数据类型转换问题浅析

    下面我将为您详细讲解 “Vue Axios异步与数据类型转换问题浅析” 的完整攻略。 一、背景介绍 Axios 是一个基于 Promise 的 HTTP 库,可以在浏览器和 Node.js 中使用,用于与后台接口进行数据交互。Vue 是一个流行的前端框架,实现了数据的双向绑定和组件化开发,使得前端开发更加高效和灵活。 但在使用 Vue 和 Axios 进行开…

    Vue 2023年5月27日
    00
  • 解决Nginx 配置 proxy_pass 后 返回404问题

    当使用Nginx进行反向代理时,有时会遇到proxy_pass指向的地址返回404的问题。这个问题可能有很多原因,以下提供一些可能解决问题的方法。 确认proxy_pass指向的地址是否正确 首先确保proxy_pass指向的地址是正确的。可以尝试用curl等工具进行测试,以确认proxy_pass地址的正确性。如下面的示例: location /api/ …

    Vue 2023年5月28日
    00
  • Three.js学习之几何形状

    以下是”Three.js学习之几何形状”的完整攻略。 简介 Three.js是一个非常 popular 的JavaScript 3D 库,对于网页、游戏和可视化项目的开发来说是非常有用的。在Three.js中,我们可以创建多种类型的几何形状,并且通过应用材质和光照来增强其视觉效果。本篇攻略将会介绍如何使用Three.js创建几何形状,并将给出两个示例让你更好…

    Vue 2023年5月28日
    00
  • 详解vue v-model

    当我们学习Vue框架时,v-model是一个很重要的概念。v-model指令可以在表单(input, textarea, select)元素上创建双向数据绑定。它可以把表单中用户输入的数据,绑定到Vue实例中的数据属性上;同时,当Vue实例中的数据属性发生变化时,它会同步到表单中去。 1. 如何使用v-model v-model绑定到表单元素上,它的值是绑定…

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