当前位置: 首页 > 知识库问答 >
问题:

前端 - 为什么vue3中img引入的相对路径图片,开发环境中正常显示,vite打包后路径就变成了object?

井礼骞
2024-07-19

image.png
image.png

共有2个答案

钦楚青
2024-07-19

回答:很奇怪哎,我最多遇到过打包后少了前缀./,而是都是/,导致文件找不到的情况,这种只要配置 base: "./",然后打包就行了,你这个变成了Object的,还真是少见,你是通过required获取的吗,还是动态设置src属性的呢,有报出什么错误吗

姜淇
2024-07-19

在 Vue 3 中使用 Vite 作为构建工具时,如果你在模板中直接通过相对路径引用图片,并且发现开发环境中图片正常显示,但打包后路径变成了 object,这通常是因为打包工具(如 Vite)在处理资源时,尤其是在生产模式下,会将资源作为模块处理,并返回模块标识符(通常是 import() 调用返回的 Promise 对象),而不是直接的文件路径。

在 Vue 3 的单文件组件(SFC)中,你应该使用 import 语句来引入图片,并在模板中通过计算属性或数据属性来引用它。这样做可以确保 Vite 正确地处理图片资源,并在打包时包含它们。

例如,你可以这样做:

<template>
  <div>
    <img :src="imagePath" alt="My Image">
  </div>
</template>

<script>
import image from './path/to/your/image.png'; // 注意这里的路径应该是相对于当前.vue文件的

export default {
  data() {
    return {
      imagePath: image, // 这里 image 变量是一个模块标识符或解析后的图片 URL
    };
  },
};
</script>

注意,在某些情况下,Vite 会自动将图片路径转换为 URL,但在其他情况下,你可能需要配置 Vite 或使用特定的插件来确保图片被正确处理。

如果你确实想使用相对路径,并且希望它在生产环境中也能正常工作,你可能需要配置 Vite 的 publicDirassetsDir 选项,并确保你的图片放置在这些目录中。这样,Vite 会将这些目录中的文件复制到构建输出的公共目录,并保持它们相对于 index.html 的相对路径。

但总的来说,使用 import 语句来引入图片是更推荐的做法,因为它提供了更好的模块化和打包支持。

 类似资料:
  • 为什么vite打包后scss中引用的图片路径不对 vite配置如下: scss文件和图片文件目录结构如下: 打包后的目录结构: 打包后的css文件中的图片引用: 打包后正确的引用路径应该是这样:url(../img/add-1bd6048f.svg) 大佬问解惑下,为什么打包后的图片引用不对。 如果可以,不改变现有的文件目录和打包后的目录结构 现有的项目文件目录要合规范,所以这样放置。 打包后的目

  • Vite + Vue3 + Electron 打包后静态资源路径错误 图片 src 如果是动态拼接的话,路径指向会出现问题 第一个路径不正确:file:///G:/vite.svg 第二个路径为:file:///G:/vite-electron/release/win-unpacked/resources/app.asar/dist/vite.svg 还有这种字体文件导入也会出现问题,类似上面直接

  • 问题内容: 我正在尝试从Windows命令提示符(Windows 10)运行python。因此,结果是未配置路径环境变量时的典型结果 但是,我不确定应该在path变量中设置哪个目录。 我尝试了一些变体,但没有一个起作用,包括: 他们都不起作用。 有没有人对这个特定的系统星座(Windows,anaconda)有经验。谢谢。 问题答案: 原来我错了。 解决方案是:在anaconda(以及其他实现中)

  • 项目用的 vue3+vite,包管理器 pnpm,执行 pnpm build。 生成的js为啥把路由劝返回出来了。被检测存在系统路径信息泄露,怎么解决呢 vite配置文件build部分: build生成的js文件:

  • vite.config.ts文件代码 图片显示页面代码 下面是我build生成后的文件,我前面明明有一个room的文件夹,但是build后确直接在assets文件夹下面生成了,这是什么原因?还有../assets/${name}这里为什么不能写成@/assets/${name}?

  • 问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置