You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SvelteKit项目中加载Directus图片失败,如何解决?

解决Directus + SvelteKit 图片资源无法显示的问题

核心问题排查与解决步骤

  • 端口指向错误
    你当前把资源路径指向了SvelteKit的服务端口(5173),但Directus的静态资源服务默认运行在8055端口。直接修正地址即可:

    <img src={`http://localhost:8055/assets/${image}`} alt={item} />
    
  • 文件字段取值错误
    如果你的image字段是Directus的「文件」类型,返回的不是纯ID字符串,而是包含id、url等属性的对象。需要取正确的字段属性:

    // 若字段返回文件对象,提取id拼接路径
    <img src={`http://localhost:8055/assets/${image.id}`} alt={item} />
    // 或直接使用Directus返回的完整url(需后台配置正确的公共访问地址)
    <img src={image.url} alt={item} />
    
  • 资源权限未开放
    如果图片没有设为「公共访问」,Directus会拒绝未授权请求。两种解决方式:

    • 在Directus后台,找到对应文件集合的权限设置(设置→权限→目标集合),勾选「公共读」权限
    • 若为私有资源,需在请求头中携带Directus的访问token
  • 用SvelteKit代理隐藏Directus地址
    不想直接暴露Directus端口的话,可在vite.config.js中配置代理:

    export default {
      server: {
        proxy: {
          '/directus-assets': {
            target: 'http://localhost:8055/assets',
            changeOrigin: true,
            rewrite: (path) => path.replace(/^\/directus-assets/, '')
          }
        }
      }
    }
    

    之后图片路径改为:

    <img src={`/directus-assets/${image.id}`} alt={item} />
    

内容的提问来源于stack exchange,提问作者HONjramiroz98

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 00:00:07