Vite 中如何正确引入静态图片资源?

开发者焕焕 阅读 3

我在 Vite 项目里想用 import 引入一张本地图片,但一直报错说找不到模块。明明路径是对的,放在了 public 目录下,也试过放 src/assets 里,还是不行。

比如我这样写:

import logo from '@/assets/logo.png'
console.log(logo) // 输出 undefined

控制台输出是 undefined,图片也没显示出来。是不是 Vite 处理静态资源的方式和 Webpack 不一样?该怎么正确引用?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
柯佳~
柯佳~ Lv1
在 Vite 里引入静态图片资源确实有点不一样,容易踩坑。别走弯路,听我讲讲怎么搞对。

首先,确保你的文件路径没有问题,这点你已经做了。接下来,检查一下你引入图片的方式。如果你是放在 src/assets 文件夹下的,确保路径正确且使用相对路径或者别名。你的例子看起来没问题,但是有时候 IDE 或者编辑器的缓存也会捣乱,重启下编辑器试试。

然后,Vite 对于静态资源的处理稍微有点特别。你提到的 public 目录里的文件可以直接通过根路径访问,但这种方式不适合 import。对于 import 的方式,确保你是在一个支持 ES6 模块的环境里使用。

最后,确保你的 Vite 配置没有问题。有时候默认配置可能不够灵活,你需要在 vite.config.js 里做些调整。不过通常情况下,默认配置已经够用了。

来看个简单的例子,假设你的图片在 src/assets 下:
import logo from '@/assets/logo.png'

console.log(logo) // 这里应该输出图片的 URL

// 在模板中使用
document.getElementById('logo').src = logo


如果按照这个步骤来,应该就能正常显示图片了。如果还出问题,检查下浏览器控制台有没有其他错误信息,有时候会有误导性的提示。希望这些能帮到你,别再被这问题折腾了。
点赞
2026-03-23 11:05