【问题标题】:vue-cli3 public folder img doesn't show upvue-cli3 公用文件夹 img 不显示
【发布时间】:2019-06-13 07:39:45
【问题描述】:

有谁知道如何在 vue 项目的公共文件夹中使用 src 属性和 img 文件?浏览器没有找到图片。

我正在使用 Vue CLI 3.7.0

▼ 文件夹

 |
 +-- src
 |    
 +-- public
       |  
       +-- favicon.ico
       +-- logo.png
       +-- index.html

我尝试过类似:src="xxx" 的方法,但没有奏效。

<template>
    <div>
        <img :src="'/favicon.ico'">
        <img :src="`${publicPath}favicon.ico`">
     </div>
</template>

<script>
    export default {
        data: function() {
            return {
                publicPath: process.env.BASE_URL
            };
        }
    }
</script>

【问题讨论】:

  • 究竟是什么意思“不显示”?您能在浏览器的 Elements 控制台中看到 &lt;img&gt; 元素吗?如果是这样,它的src 属性值是多少?如果没有,那么您的包含图像的组件似乎没有被渲染
  • 感谢您的回复。我可以在 google chrome 控制台面板中看到 &lt;img&gt; 元素。这就是事实。 &lt;img data-v-7589ba10="" src="/img/logo.png"&gt;
  • 好的,那么/img/logo.png 来自哪里。 logo.png 文件不会出现在您的问题中,img 文件夹也不会出现。为此,您需要将文件保存在public/img/logo.png
  • 对不起,我已经将logo.png添加到公共文件夹,并修复了img src parh。 Element 控制台现在是 &lt;img data-v-7589ba10="" src="/logo.png"&gt; 但 img 已损坏。
  • “被”坏了?比如,它不再了吗?

标签: vue.js vuejs2 vue-cli-3


【解决方案1】:

更新

从下面的 cmets 看来,您正在运行

vue serve

只有 Vue CLI 项目 知道public 目录和process.env.BASE_URL。您需要运行您的项目,而不是使用instant prototypingvue serve

换句话说,运行

npm run serve

https://cli.vuejs.org/guide/cli-service.html#using-the-binary


如果你有这样的文件结构

├── public
│   ├── favicon.html
│   ├── index.html
│   ├── logo.png

那么您要显示的代码 logo.png 应该是这样的

<template>
  <div>
    <img :src="`${publicPath}logo.png`">
  </div>
</template>

<script>
export default {
  data () {
    return {
      publicPath: process.env.BASE_URL
    }
  }
}
</script>

https://cli.vuejs.org/guide/html-and-static-assets.html#the-public-folder


如果你有你的图片

├── public
│   ├── img
│   │   ├── logo.png

那么你的组件模板代码就变成了

<img :src="`${publicPath}img/logo.png`">

【讨论】:

  • 感谢详细回答。文件结构和你写的一样,我在public/logo.png中有img数据。并添加了相同的代码,但img没有出现..
  • @tanakahb 您是否尝试过重新启动开发服务器,即停止并再次运行npm run serve?有时它不会拾取大量移动文件。
  • 你为什么使用vue serve?这实际上是用于对单个文件进行原型设计 ~ “在开发模式下提供 .js 或 .vue 文件零配置“零配置” 表示它对您的public 目录一无所知。请使用npm run serve
【解决方案2】:

只需使用&lt;img src="/favicon.ico"&gt;

【讨论】:

  • 它适用于我... :-) 尝试查看生成的代码或网络请求,它会尝试从哪个 URL 加载 favicon.ico。或者,在您的模板中添加一些 &lt;a href="/favicon.ico"&gt;Link to favicon&lt;/a&gt;。它在哪里链接,什么 URL?
  • 谢谢。链接是这样的:localhost:8080/favicon.ico 这是错误的网址吗?
  • 这是正确的网址。如果您的 index.html 在同一个文件夹 (public) 中,它必须工作。尝试另一张图片(不是.ico,只是*.png*.jpg),将其放入同一文件夹(public)并尝试显示。
  • 是的,index.htm 在 public/index.html 中。我在公共文件夹中添加了logo.png,尝试了&lt;img src="/logo.png"&gt;,但img 坏了。
  • 好吧,我的最后一个想法:1)我想你可以通过访问localhost:8080/index.html来显示索引html 2)你应该能够通过访问logo.png看到localhost:8080/logo.png 3)如果两者都是真的,而不是像上面@Phil建议的那样,当然必须不渲染组件。
猜你喜欢
  • 2019-02-01
  • 2019-12-16
  • 2020-01-27
  • 2019-07-12
  • 2018-10-13
  • 1970-01-01
  • 2019-02-07
  • 1970-01-01
  • 2013-07-01
相关资源
最近更新 更多