解决vue-cli中webpack无法打包js变量中的图片路径

vue 项目打包图片没有打包进去问题解决 vue 项目打包,项目中引用了的图片没有被打进包里,导致打包后的项目图片缺失。 阅读详情

首先,我们先来重现一下问题,如果直接通过路径的形式引入一个图片,例如:

<template>
  <div id="app">
    <img src="./assets/demo.jpg">
    <!--<img :src="demo">-->
    <HelloWorld/>
  </div>
</template>
假设在src的asstes目录下有一个叫demo的图片(且假设这个图片比较大,不会被base64压缩),在这种情况下,图片是可以正常显示的。但是有些时候,我们需要以js变量的形式引入一个图片的路径,此时,问题就来了。
<template>
  <div id="app">
    <img src="./assets/demo.jpg">
    {{demo}}
    <img :src="demo" alt="暂时无法显示图片">
    <HelloWorld/>
  </div>
</template>

<script>
  export default {
    name: 'App',
    data: () => ({
      src: './assets/demo.jpg'
    })
  }
</script>

程序运行的效果如下图所示:


可以看到,明明路径是一样的,可是就是显示不出图片,我通过Segmentfault查阅资料,得知,此时经过JS变量引入的图片是没有经过webpack打包压缩的,我们通过npm run build来证明我们的结论。


假如我们把代码还原成以<img  src="./assets/demo.jpg" />的形式,先rm -rf dist删除打包出来的目录,然后重新打包,

结果为:


因此,证明了文件没有经过webpack打包。

解决方法很简单:

<template>
  <div id="app">
    {{src}}
    <img :src="src" alt="暂时无法显示图片">
    <HelloWorld/>
  </div>
</template>

<script>
  const src = require('./assets/demo.jpg');
  export default {
    name: 'App',
    data: () => ({
      src
    })
  }
</script>

这就是所谓的CommonJS风格,还有一种解决方案,使用ES6的import函数,同样可以解决这个问题。

<template>
  <div id="app">
    {{src}}
    <img :src="src" alt="暂时无法显示图片">
  </div>
</template>

<script>
  let srcLoad = () => import('./assets/demo.jpg');
  export default {
    name: 'App',
    data: () => ({
      src: ''
    }),
    created () {
      console.log(srcLoad)
//      ƒ srcLoad() {
//        return __webpack_require__.e/* import() */(1).then(__webpack_require__.bind(null, "./src/assets/demo.jpg"));
//      }
      srcLoad().then( i => {
        this.src = i
      })
    }
  }
</script>

ES6的Import不仅可以进行模块的导入导出,还可以引入一个资源,该函数返回的是一个Promise对象,在then方法中可以获得资源的路径。另外一个就是import只能引入静态资源,不能进行JS字符串的拼接。我们基于require的语法继续扩展一下,大家可以尝试配置一个json-loader,把所以需要JS变量引入的图片路径全部配置到里面去,然后通过require()动态的获取。

补充:webpack采用的是CommonJS语法,从这个console打印的内容确实可以看出。


vue-cli2多环境打包配置 背景:框架vue2+工具vue-cli2,项目需要打包两个角色,三个运行环境:本地,测试,生产, 上线发布有的直接在根目录下,有的需要在二级目录下。 一、增加打包配置文件 1、config文件夹增加4个环境变量文件,build文件夹增加7个打包配置文件 2、新增环境变量文件: 添加规则按照已有环境变量添加即可,名字自己取,最好见名知意,图中的APP_USER_TYPE自定义,如果需要更多自定义变量自行增加即可。 3、新增build文件:拷贝已有build文件,修改process.env.N 阅读详情

相关推荐

Vue全家桶实践(一)---vue-cli

最近公司要重写运营管理系统,不想再维护之前的backbone了,赶紧要求前端整个重写。重开新坑,用了两周多撸出了第一版,收获很大。在实践中学习永远都是最高效的。趁热把学到的东西都记录总结下来,也算前端梳理一下思路。 相关博客: Vue全家桶实践(一)—vue-cli Vue全家桶实践(二)—iView Vue全家桶实践(三)—axios Vue全家桶实践(四)—vue-router Vue

Creabine的博客 1万+

vue打包找不到图片,图标等资源问题

修改配置文件 config/index.js 原本内容为 '/'。没有小点; 解决的问题是:文档发布找文件路径是在当前路径下找相对路径,否则的话会找绝对路径 build/utils.js 【此处关键】解决的问题是:样式表里引入的背景图片原本会自动加入'static/css'。把背景图识别到了样式css的目录下加上词句后,就可以找到样式表外层目录; 需要注意的是:样式表里引...

xiasohuai的博客 5063

告别手动干预:深入浅出LPDDR5的Background ZQ校准与DVFSQ切换避坑指南

本文深入解析LPDDR5的Background ZQ校准与DVFSQ切换技术,帮助工程师实现DRAM阻抗校准的自动化管理。通过详细配置指南和实战案例,揭示如何避免动态电压调节下的模式切换陷阱,提升信号完整性和系统能效。特别适合嵌入式系统和移动终端开发者参考。

weixin_30329623的博客 455

vue+webpack图片打包出错处理办法

vue+webpack图片路径打包出错处理办法第一步第二步 图片文件目录 项目目录\src\assets\images\layout 第一步 文件路径:项目目录\build\webpack.base.conf.js 配置 第二步 引用 ...

maichaoqun的博客 915

Mac开发环境一键配置指南|从零到生产力

类别工具包管理Homebrew终端版本管理容器编辑器效率用一键脚本的话,2小时内可以搞定全部环境。有问题评论区交流~

在代码的世界里,每天进步1% 625

system_stm32f10x.c文件分析

配置系统时钟(包括系统时钟源、锁相环(PLL)倍频系数、高级高性能总线(AHB)/ 高级外设总线(APBx)预分频器以及闪存相关设置)。该函数在系统复位后的启动阶段被调用,且调用时机早于跳转到主程序之前。

Jia shuheng的博客 603

vue打包优化策略

vue项目打包优化策略

叶 1130

基于STM32的智能工业机器人臂控制系统

工业机器人臂是智能制造的核心组件,广泛应用于装配、焊接、搬运等任务。基于STM32微控制器的机器人臂控制系统,通过集成伺服电机驱动、运动规划算法和实时通信功能,实现对多轴机械臂的精确控制与路径规划。本设计通过STM32实现了一套智能工业机器人臂控制系统,集成了高效的运动规划算法和实时控制功能。机器人臂系统根据输入的目标位置(如工件坐标),通过运动学计算生成动作轨迹,利用伺服电机驱动器控制关节运动。该系统广泛应用于工业自动化场景,如汽车制造中的零件装配、电子产品生产中的元件焊接以及物流系统中的物料搬运。

stm32d1219的博客 2569

在vue中的js部分导入图片后通过webpack无法被正确打包的问题

具体描述 在vue组件的js部分导入图片要使用require的形式导入,否则webpack不能正常导入,因为其路径不符合其解析规范 原因 在引入图片的时候的地址数据的时候需要使用require来讲图片作为模块引入,这样才会被webpack正确的打包的项目文件中,否则会因为webpack根据依赖打包而找不到指定的图片 如果是在HTML中的img中通过v-bind引入引入图片,src为对应的数据变量的话

RotatingBlock的博客 4086

Imputation Methods for scRNA Sequencing Data

越来越多的研究者使用单细胞RNA测序(scRNA-seq)技术来表征单细胞水平的转录图谱。他们用它来研究复杂组织的异质性、转录组动力学和未知生物的多样性。然而,在基因表达模式随机性的scRNA-seq数据中普遍存在许多技术和生物学上的噪音。这些数据通常具有高维、稀疏和大量“dropout”值的特点,并且受批处理效应的影响。scRNA-seq数据中大量的“dropout”值严重掩盖了基因之间的重要关系,阻碍了下游分析。因此,scRNA-seq数据dropout值的估算就显得尤为重要。

qq_34179307的博客 543

基于STM32的多路火灾报警系统设计

本文设计了一款基于STM32的多路火灾报警系统,利用多个传感器组合(如烟雾传感器、温度传感器等)进行数据采集与处理,精确判断火灾情况,并及时发出报警信号,保障生命与财产安全。本系统设计了一款基于STM32的多路火灾报警系统,通过结合烟雾传感器和温度传感器,提升了火灾检测的准确性和可靠性。未来,系统可以进一步集成更多传感器,如气体传感器、湿度传感器等,进一步提升火灾报警系统的智能化水平。本系统采用STM32F103单片机作为核心处理单元,结合烟雾传感器、温度传感器和报警模块,实现多通道火灾报警功能。

stm32d1219的博客 2034

Vue.js CLI4 Vue.config.js标准配置 (最全注释)

前言: Vue.js CLI工具 不知不觉发展到了4.0时代,CLI给人最直白的感受是没有了build文件夹跟config文件夹,所有的配置都在Vue.config.js完成。那么该文件的配置至关重要。现在我们来看一下最新配置是怎么配置的。 // vue.config.js const path = require('path'); const CompressionWebpackPlugin ...

主要领域:前端开发 7万+

高德地图与CAD图叠加显示方法汇总及优缺点分析

高德地图应用在许多领域,平常我们用的地图导航,除过正常的地图导航指引功能之外,其实还有很多实用的功能。如高德影像地图应用在包括地理、土地测量、水文学、生态学、气象学以及海洋学等方面。AutoCAD在行业中常用于城市规划、平面设计、建筑师等,这其中也要用到高德地图。最常见的是CAD图与高德地图叠加使用,通过两者叠加直观显示,助力行业提高工作效率。那如何将高德地图与CAD图叠加显示呢?下面听小编把方法一一介绍下以及各种方法的优缺点。

vjmap的博客 2728

Vue打包为相对路径

对于更复杂的部署需求,可以编写自定义脚本来处理资源路径。通过上述内容,我们不仅了解了如何在Vue项目中配置打包输出的资源文件路径为相对路径,还学习了如何解决常见的问题及一些实用的技巧。希望这些内容能够帮助你在实际开发中更好地管理和配置应用的资源路径。欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。DTcode7的博客首页。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 2933

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

专栏总目录,文中介绍了UDS协议相关的基础知识和一些术语,给出了详细介绍6大类26种服务的跳转目录。

车载系统攻城狮 9万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【Vue-cli入门】脚手架配置文件vue.config.js详解

为什么要配置vue-cli 最近发现很多初学的小伙伴不知道vue-cli项目是可以进行配置的,配置脚手架可以解决很多细节问题,比如设置打包文件的输出目录名、打包引入资源的初始路径、配置本地服务器、配置webpack等。下面我把vue.config.js的常用配置代码分享给大家,然后会对每一个配置项做一个详细的介绍。 首先生成脚手架项目(会创建脚手架的此处略过) 1.npm install -g @vue/cli // 全局安装vue-cli 2.vue create xxx // 在当前目录下创建

qq_40279656的博客 7970

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Vue 项目打包后路径问题的解决方法

Vue 项目打包后路径问题通常由静态资源路径错误、路由路径错误、环境变量路径错误或publicPath配置错误引起。通过正确配置静态资源路径、Vue Router 的base选项、环境变量、publicPath配置以及使用相关插件,可以有效解决这些问题。希望本文的介绍能帮助你在 Vue 开发中更好地处理打包后的路径问题,确保项目在生产环境中的正常运行。最后问候亲爱的朋友们,并邀请你们阅读我的全新著作📚《Vue.js 3企业级项目开发实战(微课视频版》

有我更精彩的博客 2769

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

vue-cli 3.X webpack配置( 主要实现 resolve.alias的配置)

近期有新项目开发,使用vue-cli3.7进行项目构建,形式上跟vue-cli2.x 区别还是蛮大的。最主要的就是生成的项目中,进行webpack配置的文件没有了。这是因为在这个版本的cli中,作者将绝大部分相同的webpack配置,已经封装到cli的安装包中。我们可以打开 node_modules/_@vue_cli-service@3.7.0@@vue/cli-service文件夹看一下,...

bowen11233的博客 2万+

vue项目创建后没有webpack.config.js文件

文章目录关于webpack.config.js文件没有的原因手动创建一个 vue.config.js没有配置vue.config.js之前,打包后的文件如下配置后 关于webpack.config.js文件没有的原因 Vue 项目中 vue.config.js 文件就等同于 webpack 的 webpack.config.js。 vue-cli3 之后创建的时候并不会自动创建 vue.config.js,因为这个是个可选项,所以一般都是需要修改 webpack 的时候才会自己创建一个 vue.co

m0_45272038的博客 1万+

如何解决创建vue项目后没有webpack.config.js(vue.config.js)文件

这篇文章主要介绍了Vue创建项目后没有webpack.config.js(vue.config.js)文件的解决,具有很好的参考价值,希望对大家有所帮助

青春木鱼的博客 8107

vue-cli打包上线遇到各文件找不到问题——引入

在做VUE-cli WebPack脚手架项目打包完成后,在服务器上运行发现,有些js中定义的变量找不到,css,背景图片资源等都找不到,原来发现项目打包后的CSS和JS的引用路径是绝对路径,项目部署后会将静态当成根目录,就造成了文件引用路径的错误,解决方法是通过修改配置文件,将绝对路径改为相对路径,从而达到资源的相对引用。 一、‘/’指的是项目的根目录 ,’./’指的是当前目录 1.publicP...

qq_45668489的博客 1554

node.js、webpack、vue-cli下载安装、配置教程以及vue项目的创建

node.js、vue.js、webpake安装教程及常用命令node.js下载路径安装、配置webpack安装、配置vue-cli安装vue创建步骤vue项目目录说明 node.js 下载路径 官方下载路径:https://nodejs.org/zh-cn/download/ 常见的有msi和zip两种形式。 ①msi文件下载后点击安装包,一直next(下一步)即可安装。 ②zip文件下载后解...

sxau_zhangtao的博客 1783

Vue-CLI入门(webpack入门、安装配置Vue-CLI(命令、手动、自动版本)、使用Vue-CLI创建组件和Vuex和Vue-router、配置跨域请求数据以及配置webpack添加插件等)

目录 webpack入门链接 Vue-CLI介绍 安装配置Vue-CLI 全局安装命令 自动版本 手动版本 运行和打包项目 使用Vue-CLI 创建子组件 使用Vuex 使用Vue-router 修改webpack配置 Vue-CLI封装的webpack配置属性链接 配置反向代理(跨域请求数据) 添加webpack中插件 webpack插件链接 封装自定义插件 保存自动格式化代码配置 webpack入门链接 webpack使用入门(配置loader:style、css

AIWWY的博客 1835

Vue.js CLI4 Vue.config.js标准配置 (最全注释)

前言: Vue.js CLI工具 不知不觉发展到了4.0时代,CLI给人最直白的感受是没有了build文件夹跟config文件夹,所有的配置都在Vue.config.js完成。那么该文件的配置至关重要。现在我们来看一下最新配置是怎么配置的。 有三种方式,推荐第二种标准版(无需安装依赖,直接复制即可配置)。 1、依赖库 npm install vue-cli-configjs 2、标准版 // vue.config.js const path = require('path'); const IS_PR

qq_43248623的博客 1907

vue中webpack默认配置_vue-cli脚手架中webpack配置基础文件详解

一、前言原文:https://segmentfault.com/a/1190000014804826vue-cli是构建vue单页应用的脚手架,输入一串指定的命令行从而自动生成vue.js+wepack的项目模板。这其中webpack发挥了很大的作用,它使得我们的代码模块化,引入一些插件帮我们完善功能可以将文件打包压缩,图片转base64等。后期对项目的配置使得我们对于脚手架自动生成的代码的理解更...

weixin_29294395的博客 2599

js 图片转base64_图片的引用方式和其打包处理

在日常项目中图片可以通过img标签引入也可以通过元素的background-image引入。那么具体两种引入方式在使用中有什么区别,在打包的时候应该如何配置?本次来进行解析。1.通过img标签引用<template><divid="app"><imgclass="pic1"src="./assets/test.png">div&g...

weixin_39637457的博客 884
上一篇: 从axios看前后端数据交互
下一篇: 简谈对ES7的async和await的理解
遛狗的代码
博客等级 码龄11年 10粉丝 52原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值