HarmonyOS 鸿蒙Next JS FA 中js对象存储图片路径使用../../导致图片不能正常显示的解决方案

发布于 1周前 作者 phonegap100 来自 鸿蒙OS

HarmonyOS 鸿蒙Next JS FA 中js对象存储图片路径使用…/…/导致图片不能正常显示的解决方案 今天测试Image时发现个问题,在设置image的src时,根据工具提示支持…/,然后根据这个提示定位到图片地址,HTML如下代码

<image src="../../common/FoodImgs/Food_000.png"></image>

这样跑起来没问题,但是如果我在index.js中设置个对象,如下代码

data: {
    imageSrcTest:'../../common/FoodImgs/Food_000.png'
},

然后在hml页面中将image标签的src更改成对应的对象,代码如下

<image src="{{imageSrcTest}}"></image>

这样的话会导致图片显示不出来,我记得没错的话以前的previewer中的是显示的,模拟器中是不显示的,现在previewer和模拟器都不显示了,不知道是不是previewer进行对应的更新,这个就不去纠结了。

然后我直接将图片路径更换成如下代码

data: {
    imageSrcTest:'/common/FoodImgs/Food_000.png'
},

这样图片就能显示正常了, 最后总结出来如果想在js对象里面设置图片路径并让图片正常的显示,只能用/common/图片名称,如果有文件夹则用common/文件夹名/图片名称,至于为什么把图片放在common文件夹,这个是官方建议的。


更多关于HarmonyOS 鸿蒙Next JS FA 中js对象存储图片路径使用../../导致图片不能正常显示的解决方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

我想,在搞不懂问题的情况下, 你就先用绝对地址,

更多关于HarmonyOS 鸿蒙Next JS FA 中js对象存储图片路径使用../../导致图片不能正常显示的解决方案的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


图片是个正常都会用绝对路径,不然页面移动的时候还要改对应引用长度。

至于相对路径不行,最简单的方案就是去看打包后的样子。build的intermediates文件夹下找找看

参考文件组织

当代码文件A需要引用代码文件B时:

  • 如果代码文件A和文件B位于同一目录,则代码文件B引用资源文件时可使用相对路径,也可使用绝对路径。
  • 如果代码文件A和文件B位于不同目录,则代码文件B引用资源文件时必须使用绝对路径。因为Webpack打包时,代码文件B的目录会发生变化。

第一种情况直接图片路径直接写死,在打包过程中会解析路径进项相应的替换。

第二种赋值变量编译之后变量值是不变的,但项目的目录结构会发生变化,可能就找不到对应的打包后的图片了。

common文件夹比较特殊编译之后就是一级目录所以写绝对路径是没问题的。

刚入门,有错请指出,轻喷,谢谢

在HarmonyOS鸿蒙Next JS FA(Feature Ability)开发中,若使用../../这样的相对路径存储图片路径导致图片不能正常显示,通常是因为路径解析错误或资源引用方式不正确。

解决方案如下:

  1. 确认资源位置:首先确认图片资源是否放置在正确的资源目录中,如resources/rawfile

  2. 使用绝对路径:在JS代码中,尽量使用基于$file全局变量的绝对路径来引用资源。例如,如果图片位于resources/rawfile/images目录下,可以这样引用:${$file('rawfile/images/your_image.png')}

  3. 路径拼接:如果需要在不同层级间引用资源,考虑使用路径拼接函数或方法来确保路径的正确性,但鸿蒙系统更推荐使用上述的绝对路径方式。

  4. 检查权限:确保FA有权限访问指定的资源目录,虽然这通常不是路径错误导致的显示问题,但仍是值得检查的一点。

  5. 清理缓存并重建:有时候,开发工具的缓存可能导致资源更新不及时,尝试清理项目缓存并重新构建。

如果问题依旧没法解决请联系官网客服,官网地址是 https://www.itying.com/category-93-b0.html

回到顶部