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

Vue3项目build构建时无法解析assets图片资源报错解决

问题描述

本地执行npm run dev启动Vue 3开发服务运行完全正常,但在Heroku上执行生产构建部署网站时抛出如下资源解析错误:

Could not resolve './assets/Design%20Pics/Drone/7_0030.png' from src/App.vue
error during build:
Error: Could not resolve './assets/Design%20Pics/Drone/7_0030.png' from src/App.vue
    at error (C:\Users\stove\Desktop\Aero Website\AeroWebsite\node_modules\rollup\dist\shared\rollup.js:198:30)
    at ModuleLoader.handleResolveId (C:\Users\stove\Desktop\Aero Website\AeroWebsite\node_modules\rollup\dist\shared\rollup.js:22508:24)
    at C:\Users\stove\Desktop\Aero Website\AeroWebsite\node_modules\rollup\dist\shared\rollup.js:22471:26

问题相关代码片段(项目使用Bulma作为样式框架):

<section class="section">
<!-- to center columns, the parent has to be the image which is impossible -->
    <div class="card">
      <div class="card-image">
        <figure class="image is-2by1 level">
          <img src="./assets/Design Pics/Drone/7_0030.png" alt="Drone Image" width="1280" height="720">
          <div id="title-overlay-pad" class="is-overlay level-right">
            <div id="title-overlay-background" class="has-text-centered">
              <p id="title-home-page">delivAERO</p>
              <p id="tagline-home-page">Revolutionizing the World's Delivery Infrastructure</p>
            </div>
          </div>
        </figure>
      </div>
    </div>
  </section>

项目目录层级参考:
项目目录结构截图

解决方案

该报错由开发环境与生产构建的路径解析逻辑差异导致:Vite开发服务可正常识别模板中带空格的相对资源路径,但生产构建阶段Rollup会将路径中的空格转码为%20,无法匹配到本地实际文件,最终抛出解析错误。

  • 基础修复方式为通过import语句提前引入图片资源,再通过v-bind绑定到模板的src属性上。如果相对路径引入仍存在解析异常,可使用@路径别名(Vue项目默认将@指向src目录)以绝对路径形式引入assets目录下的资源,写法为import 自定义资源名 from '@/assets/资源实际路径.png'。
  • 若使用TypeScript + <script setup>语法时抛出error TS1232: An import declaration can only be used at the top level of a namespace or module.错误,原因是import声明必须放在script块的最顶部,优先级高于所有其他业务代码,正确写法示例:
<script setup lang="ts">
  // 所有import声明放在最顶部,优先于其他JS/TS代码
  import droneImg from '@/assets/Design Pics/Drone/7_0030.png'; // 引入目标图片
  
  // 其余业务逻辑代码写在import语句之后
</script>

模板中原img标签的静态src改为绑定引入的资源变量即可:

<img :src="droneImg" alt="Drone Image" width="1280" height="720">

实测该方案可完全解决生产构建时的静态资源解析问题,多数场景下使用相对路径import引入资源也可正常生效。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:48:18