uni-app 更新编译器版本后 h5调试时无法加载本地图片资源

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app 更新编译器版本后 h5调试时无法加载本地图片资源

示例代码:

<template>  
    <view>  
        <image :src="ces"></image>  
    </view>  
</template>  

<script>  

export default {  
    onLoad() {  

    },  
    data() {  
        return {  
            ces:'/static/app/pagesA/babyNameCreate/bt_1.png'  
        };  
    },  
    methods: {  
        getImg(){  
            return '/static/app/pagesA/babyNameCreate/bt_1.png'  
        },  
    }  
};  
</script>

操作步骤:

就上面的代码,可以确定这个位置的图片是存在的,但是就是无法显示。如果直接 <image src="@/static/app/pagesA/babyNameCreate/bt_1.png"></image> 是可以显示出来的。不加@无法显示。 如果使用变量ces或者方法getImg,无论加不加@都无法显示。 无论是用相对地址还是绝对地址都是一样的结果。 如果这是一张远程图片,无论什么方式都能正常显示,只有本地图片会异常。

预期结果:

图片需要能正常显示

实际结果:

图片无法正常显示

bug描述:

更新编译器版本后,h5调试时无法加载本地图片资源。不止是火狐浏览器,编译器自带浏览器也是这样!

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

2 回复

自3.9+版本,static目录下支持了app和web两个新的平台专用目录。在运行到非app平台时,app目录不会copy到编译后的文件中。 参考文档:https://uniapp.dcloud.net.cn/tutorial/platform.html#static 可以将app目录重命名为其他名称。或者手动copy目录到编译后的资源中。


在 uni-app 更新编译器版本后,H5 调试时无法加载本地图片资源的问题,可能是由于以下几个原因导致的。你可以按照以下步骤进行排查和解决:

1. 检查图片路径

确保你在代码中使用的图片路径是正确的。在 uni-app 中,本地图片资源通常放在 static 目录下,引用时路径应该是相对于 static 目录的。

例如,如果你有一张图片 static/images/logo.png,你应该这样引用:

<image src="/static/images/logo.png"></image>

2. 检查 vue.config.js 配置

如果你在项目中自定义了 vue.config.js,确保配置中没有影响到静态资源的加载。特别是 publicPathoutputDir 等配置项。

module.exports = {
  publicPath: './',
  outputDir: 'dist',
  // 其他配置
}

3. 检查 manifest.json 配置

manifest.json 中,确保 h5 配置项中的 publicPath 设置正确。通常情况下,publicPath 应该设置为 ./,以确保资源路径正确。

{
  "h5": {
    "publicPath": "./"
  }
}

4. 检查编译后的文件路径

编译后,检查生成的 dist 目录,确保图片资源被正确复制到输出目录中。如果图片资源没有被正确复制,可能是构建配置有问题。

5. 清理缓存

有时候,浏览器缓存可能会导致资源加载问题。尝试清理浏览器缓存,或者使用无痕模式进行调试。

6. 检查网络请求

使用浏览器的开发者工具(F12),查看网络请求,确认图片资源的请求路径是否正确,以及是否返回了 404 错误。如果路径错误,可以根据错误信息调整代码中的路径。

7. 更新依赖

确保你的项目依赖是最新的,特别是 uni-app 相关的依赖。你可以尝试删除 node_modules 目录和 package-lock.json 文件,然后重新安装依赖:

rm -rf node_modules package-lock.json
npm install

8. 检查 uni-app 版本

如果你使用的是较新的 uni-app 版本,可能会有一些 breaking changes。查看 uni-app 的官方文档或更新日志,确认是否有相关的变更。

9. 使用 requireimport 引入图片

如果你仍然遇到问题,可以尝试使用 requireimport 的方式引入图片,确保路径正确。

<image :src="require('@/static/images/logo.png')"></image>

或者

import logo from '@/static/images/logo.png';

export default {
  data() {
    return {
      logo: logo
    }
  }
}

10. 检查跨域问题

如果你在本地调试时使用了代理服务器,确保代理配置正确,避免跨域问题导致资源加载失败。

11. 检查 webpack 配置

如果你自定义了 webpack 配置,确保没有影响到静态资源的加载。特别是 file-loaderurl-loader 的配置。

12. 重新编译项目

有时候,重新编译项目可以解决一些奇怪的问题。尝试删除 dist 目录,然后重新编译项目:

npm run build:h5
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!