You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Capacitor原生环境中动态加载图片并解决404问题?

解决动态加载图片在Capacitor移动端的404问题

问题根源

Web端运行时直接读取原项目目录下的images/logo.png,路径有效;但vite build默认不会将images目录复制到/dist构建产物中,而npx cap sync使用的是/dist目录,导致移动端找不到图片资源,触发404错误。

解决方案

方案1:利用Vite的public目录(推荐)

Vite会自动将public目录下的文件原封不动复制到构建产物的根目录,无需额外配置:

  1. 调整项目目录结构:
public/
  images/
    logo.png
index.html
js/index.js
  1. 修改jQuery代码中的图片路径为绝对路径(基于构建后的根目录):
$("<img/>", {
   src: "/images/logo.png"
}).appendTo("body");

方案2:配置Vite复制指定目录

如果不想调整目录结构,可通过rollup-plugin-copy插件将images目录复制到构建产物:

  1. 安装插件:
npm install rollup-plugin-copy --save-dev
  1. vite.config.js中添加配置:
import { defineConfig } from 'vite';
import copy from 'rollup-plugin-copy';

export default defineConfig({
  build: {
    rollupOptions: {
      plugins: [
        copy({
          targets: [
            { src: 'images/*', dest: 'dist/images' }
          ]
        })
      ]
    }
  }
});
  1. 保持或修改图片路径为绝对路径/images/logo.png,确保跨平台路径一致。

关键注意点

  • 尽量使用绝对路径指定资源位置,避免在不同路由场景下相对路径失效的问题。
  • 每次修改配置或资源后,需重新执行npm run buildnpx cap sync,确保移动端同步最新构建产物。

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

火山引擎 最新活动