Vue项目build后,图片加载不出来的解决

目录
  • Vue项目build图片加载不出来
    • 1.在config/index.js文件内
    • 2.在webpack.prod.conf.js文件内
    • 3.在utils.js文件里添加 publicPath:'../../'
  • Vue项目打包后部分图片不显示

Vue项目build图片加载不出来

vue项目,build之后会对图片进行处理,具体处理的方式是在文件webpack.base.conf.js中,有如下代码:

module: {
    rules: [
     {
        test: /\.(png|jpe?g|gif|svg)(\?.*)?$/,
        loader: 'url-loader',
        options: {
          limit: 10000, // 1k-----限制文件的大小
          name: utils.assetsPath('img/[name].[hash:7].[ext]')
        }
     }
    ]
}

以上代码中,使用url-loader对图片的大小进行限制,在limit之内,webpack会将图片转化为base64,超出limit限制,交给file-loader处理。

如果在limit范围之内,不会出现图片加载不出来的情况;

超出limit,webpack会将处理后的图片放在dist/static/img/中,此时加载图片将会显示不出来。具体做法如下:

1.在config/index.js文件内

修改代码: (列出index.js的部分代码)

build: {
    // Template for index.html
    index: path.resolve(__dirname, '../dist/index.html'),
 
    // Paths
    assetsRoot: path.resolve(__dirname, '../dist'),
    assetsSubDirectory: 'static',
    assetsPublicPath: './', 
}

assetsPublicPath字段值由之前的'/'改为'./';

2.在webpack.prod.conf.js文件内

output字段,添加代码(publicPath: './'):

output: {
    publicPath: './', // 添加的代码
    path: config.build.assetsRoot,
    filename: utils.assetsPath('js/[name].[chunkhash].js'),
    chunkFilename: utils.assetsPath('js/[id].[chunkhash].js')
  },

3.在utils.js文件里添加 publicPath:'../../'

代码如下:

// (which is the case during production build)
if (options.extract) {
  return ExtractTextPlugin.extract({
    use: loaders,
    fallback: 'vue-style-loader',
    publicPath: '../../'  // 添加的代码
  })
} else {
  return ['vue-style-loader'].concat(loaders)
}

以上步骤操作完后,执行命令:npm run build

在build后,dist中的index.html页面的link、script标签的引入路径变为相对路径;同时,相关的图片路径,也变变为相对路径,此时部署项目,不再出现图片路径404。

Vue项目打包后部分图片不显示

1.图片的后缀名不能含ad字母敏感词(即谷歌会认为是广告,并自动删除)

2.图片本身(质量)的原因,跟前端无关,需让UI给新的设计图片。--备注:QQ直接截图到本地的图片打包后可能也不显示,需跟UI要原始设计图。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • vue 项目build错误异常的解决方法

    在生成vue项目的时候,出现如下错误 ERROR in static/js/index.d66d806fcdd72b36147b.js from UglifyJs Unexpected token: punc (() [src/components/Hello.vue:26,0][static/js/index.d66d806fcdd72b36147b.js:34,6] ERROR in static/js/cell.89bb6f1195b769a2c949.js from UglifyJs U

  • 解决vue项目 build之后资源文件找不到的问题

    解决静态资源失效的问题 这就需要修改我们的 config 中的 index.js了,默认的build 中的部分是这样的: build: { // Template for index.html index: path.resolve(__dirname, '../dist/index.html'), // Paths assetsRoot: path.resolve(__dirname, '../dist'), assetsSubDirectory: 'static', assetsPublic

  • 基于vue 动态加载图片src的解决方法

    好久没更博了,最近也不知道在忙啥,反正就是感觉挺忙的,在群里看到陆陆续续有刚入vue小伙伴问vue动态加载图片总是404的状况,这篇就简单的说明为什么会出现以及解决办法有哪些. 首先先说明下vue-cli的assets和static的两个文件的区别,因为这对你理解后面的解决办法会有所帮助 assets:在项目编译的过程中会被webpack处理解析为模块依赖,只支持相对路径的形式,如< img src="./logo.png">和background:url(./logo.p

  • Vue项目build后,图片加载不出来的解决

    目录 Vue项目build图片加载不出来 1.在config/index.js文件内 2.在webpack.prod.conf.js文件内 3.在utils.js文件里添加 publicPath:'../../' Vue项目打包后部分图片不显示 Vue项目build图片加载不出来 vue项目,build之后会对图片进行处理,具体处理的方式是在文件webpack.base.conf.js中,有如下代码: module: {     rules: [      {         test: /\.

  • kotlin项目加入Glide图片加载库并使用GlideApp的方法

    前言 之前一直是在java项目中使用Glide加载图片,自从去年Google宣布Kotlin成为Android官方开发语言之后,我也开始使用kotlin开发了项目,自从使用kotlin之后,再也回不到了java的怀抱了. 现在,Glide的版本也进行了几个大的升级,目前,最新的版本是4.8.0,提供了很多的新的特性,GlideAPP就是其中一个,唯一不足的就是,还没有引入对AndroidX的支持,不过听说是在5.0之后开始对AndroidX支持,让我们拭目以待吧,下面我们开始在kotlin项目中

  • IDEA创建Maven项目一直显示正在加载的问题及解决

    目录 IDEA创建Maven项目一直显示正在加载问题 前景概要 出现的怪问题 解决方案 第二种解决方案 出现原因 解决方案 IDEA创建Maven项目一直显示正在加载问题 前景概要 创建项目 idea一直在解析maven工程 刚创建的项目,就下面这张图一直解析都没有解析成功 出现的怪问题 如果你一直等待解析的话,有可能解析成功,但是明明创建在service下的子工程,在maven列表中你会看见这个工程是root父工程,并且父工程的依赖也不会传递过来这就导致必须解决 但是在你的service父工程

  • vue项目首次打开时加载速度很慢的优化过程

    目录 vue首次打开时加载速度很慢 优化vue项目加载过慢问题 发现问题 优化方案 优化方法 vue首次打开时加载速度很慢 1.使用 vue-router 懒加载解决首次加载时资源过多导致的速度缓慢问题 当你的 SPA(单页应用程序)变得很复杂时,打包构建后的 js 包会变得非常大,以至于严重影响页面的加载时间.vue-router 支持 webpack 内置的异步模块加载系统.所以,那些使用较少的路由组件不必打包进 bundles 里,只要在路由被访问时按需加载. 懒加载路由写法: { pat

  • IE6图片加载的一个BUG解决方法

    代码如下: 复制代码 代码如下: <!--[if IE 6]><script type="text/javascript"> try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {} </script><![endif]--> 注:这个BUG以前就已经发现了,这里只是再次提出来. 更详细的说明可以参考下面的文章:IE6下默认不缓存背景图片,

  • vue中图片加载不出来的问题及解决

    目录 一.项目打包完成后,打开整体空白 1.路径问题 原因 解决办法 2.vue-router的history模式打包后界面空白 二.assets目录下图片加载不出来 vue-cli的assets和static的两个文件的区别 原因 解决办法 简化本地图片加载的方法 在使用vue开发项目的时候,经常会遇到的一个问题就是:图片加载不出来.下面是我总结的几种图片加载不出来的情况及解决办法. 一.项目打包完成后,打开整体空白 1.路径问题 原因 在vue+webpack的项目中,项目打包之后的css和

  • 解决vue项目打包后提示图片文件路径错误的问题

    vue项目打包后在production模式下提示图片 '404(not found),在dev环境下好好的,打包了就提示这个错误.这是为什么呢,以前第一次使用vue-cli构建项目的的时候只有两个图片文件,当时部署后报错路径问题, 当时的想法就是简单粗暴,直接在build好的文件修改了文件路径,再后来项目中遇到了一大堆静态资源,修改路径显然是不行的,看了一下生成文件大概知道是文件目录改变了,所以引用的路径也要随之改变,网上最简单的方法是修改 'config/index.js'文件中的 build

  • Android圆形头像拍照后“无法加载此图片”的问题解决方法(适配Android7.0)

    Feature: 点击选择拍照或者打开相册,选取图片进行裁剪最后设置为圆形头像. Problem: 拍好照片,点击裁剪,弹Toast"无法加载此图片". Solution: 在裁剪的class里加两行代码 intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION); 主要代码如下: public static final S

  • vue图片加载失败时用默认图片替换的方法

    前言 本文主要给大家介绍的关于vue实现图片加载失败时用默认图片替换的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法如下 原理就是给img绑定error事件,替换原有的src地址. 首先在data中创建一个defaultImg(随便起的),里面的值是该默认图片的地址: 在html页面的img标签上绑定该属性 这样默认图片就设置好了: 这样做的好处就是可以提高用户体验,而图片的alt属性,是在图片显示失败后出现的文字,像下图所示,但是这样的用户体验不高: 像后台管理

  • 解决vue的 v-for 循环中图片加载路径问题

    先看一下产品需求,如下图所示, 产品要求图片和它的名称一一对应,本来是非常简单的需求,后台直接返回图片路径和名称,前台直接读取就可以了,但是我们没有存储图片的服务器,再加上是一个实验性的需求,图片需要存放到前台.当时我想,vue 中的img 的src 可以动态绑定到一个变量上, 很简单吗,就没有考虑太多,直接开始做了. 首先和后台商量一下数据结构,因为图片要和名称一一对应,所以后台要返回中英文的名称的映射,我把前台的图片名称直接设置给后台给的英文名称,从而读取图片,图片和中文名称就一一对应了.数

随机推荐