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

下面是详细讲解“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如何使用外部特殊字体的操作

    当我们在Vue应用中需要使用外部特殊字体时,我们可以通过以下步骤来实现。 步骤一:在项目中加入外部字体文件 首先需要将外部字体文件下载到本地,并将其加入到项目中。常见的字体文件格式有.ttf、.woff等。 例如,我们将一个名为myfont.ttf的字体文件放置于项目的assets/fonts目录下。 步骤二:配置字体文件 在index.html或main.…

    Vue 2023年5月27日
    00
  • vue部署包可配置后台接口地址的方法

    部署Vue前端应用时,可能存在需要动态配置后台接口地址的情况,比如区分开发环境、测试环境和生产环境的接口地址不同,如果需要每次手动修改这些接口地址,非常麻烦和容易遗漏,因此需要使用一些方法来实现动态配置。 下面就是一个可以用于Vue部署包可配置后台接口地址的方法。 1. 配置文件定义 Vue项目可以通过定义不同环境的配置文件,分别来指定不同环境的后台接口地址…

    Vue 2023年5月28日
    00
  • Vue冷门技巧递归组件实践示例详解

    让我来详细讲解一下“Vue冷门技巧递归组件实践示例详解”的完整攻略。 什么是递归组件? 递归指的是一个函数在执行的过程中调用了自身。同样的,在Vue中,递归组件指的是一个组件在自身内部使用自身。这种组件的实现方式通常是通过组件的name选项和components来定义自身。 如何实现递归组件? 在Vue中,想要实现递归组件,需要在组件的选项中设置组件的nam…

    Vue 2023年5月29日
    00
  • vue.js中$set与数组更新方法

    当使用 Vue.js 进行开发的时候,因其响应式的数据绑定特性,我们通常使用数组来绑定和更新数据。但是由于 JavaScript 的限制,Vue.js 并不能检测数组的变化,比如直接改变数组的某个元素,或者修改数组的长度,这样就会导致视图不会更新而产生问题。因此,我们需要使用一些特殊的方法来更改数组并确保视图更新,Vue.js 提供了两种方法: 直接利用 V…

    Vue 2023年5月28日
    00
  • 前端使用JavaScript结合CSS实现3D旋转跟随鼠标变化

    前端使用JavaScript结合CSS实现3D旋转跟随鼠标变化的完整攻略如下: 准备工作 在开始实现前,需要确保以下工作已经完成: HTML 结构 CSS 样式 JavaScript 代码 实现 3D 旋转 CSS 3D 变换是实现 3D 效果的核心。例如,使用下面的 CSS 代码可以创建一个旋转立方体的效果: #cube { position: relat…

    Vue 2023年5月28日
    00
  • nuxt.js写项目时增加错误提示页面操作

    下面我将详细讲解如何在 Nuxt.js 项目中增加错误提示页面操作的完整攻略。 增加错误提示页面操作的步骤 安装 @nuxtjs/toast 插件。 bash npm install –save @nuxtjs/toast 注:@nuxtjs/toast 是一个消息提示插件,能够在页面中动态显示成功或错误的提示消息。 在 nuxt.config.js 文件…

    Vue 2023年5月28日
    00
  • ES6中的class是如何实现的(附Babel编译的ES5代码详解)

    下面是详细讲解 “ES6中的class是如何实现的(附Babel编译的ES5代码详解)” 的攻略。 前言 ES6中的class是一种新的语法糖,它提供了一种更简单、更语义化的方式来声明类,让编写面向对象代码更加方便。本文将介绍class的语法和原理,并附上Babel编译后的ES5代码做详解。 class语法 首先我们来看一下class的语法: class P…

    Vue 2023年5月28日
    00
  • 如何使用vue开发公众号网页

    下面我将详细讲解如何使用Vue开发公众号网页的完整攻略。 步骤一:创建Vue项目 首先,我们需要使用Vue CLI工具来创建一个新的Vue项目。Vue CLI是一个标准的脚手架工具,能够帮助我们快速创建Vue应用。 安装Vue CLI: npm install -g @vue/cli 创建一个新的Vue项目: vue create my-app 步骤二:安装…

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