javascript - vue脚手架中js代码引用的图片找不到。。。
高洛峰
高洛峰 2017-04-11 10:38:52
[JavaScript讨论组]

在vue组件中的js代码里面引入一张放在 assets 的图片,最后这张图片不会被打包,导致热加载时候找不到这种图,但是html的img引入的图片却可以,怎么破。。

而且这个报错的地址也不对,我应该怎么写或者是要改webpack配置吗,怎么改,谢谢大家了!!!

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(6)
阿神

JS中引用图片 一般都是import 或者require

ringa_lee

问题其实很简单,你搞混了源文件和生成文件的路径。webpack最终打包出来的文件,肯定不可能引用你源文件的路径的,因此需要使用file-loader/url-loader把图片也打包到生成文件里,详情请看这里:webpack多页应用架构系列(六):听说webpack连图片和字体也能打包?

PHPz

新手时也遇到这问题,后来是在脚本引入。

天蓬老师

js 脚本引入的图片请放到 static 目录下,并通过 /static/... 路径使用

PHP中文网

vue的脚手架代码生成后,引入图片分为两种情况:

第一种情况是在html内引入。图片默认放置到assets内。脚手架代码内的app.vue引入的template内:

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

就是此情况。

第二种情况,就是我这里主要展示的——使用代码引入。也就是require函数方式。此处会需要webpack打包。具体使用方法可以这样如下。

首先创建环境,使用

vue init webpack testbed
cd testbed
npm install

在src/components/hello.vue内贴入脚本代码:

<script>
export default {
  name: 'hello',
  mounted(){
    var img = document.createElement('img');
    img.src = require('../assets/logo.png');
    document.getElementById("did").appendChild(img)
  },
  data () {
    return {
      msg: ''
    }
  }
}
</script>

然后验证:

npm run dev

此时你可以浏览器内看到vue的图标被显示了两次。

此处文档比较缺乏,所以是vue-cli用户常常容易误解或者难以适应的地方。

怪我咯

我也遇到这种问题,真的很恶心的,你使用require或者import来引入可以解决。虽然这种方法可以解决但是这种方式肯定不好的。希望有人详细解释下vue的路径的问题

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号