微信小程序开发,[ miniprogram/app.json 文件内容错误],["tabBar"]["list"][0]["iconPath"]: "/miniprogram/assets/tabbar/icon_main_home.png" 未找到
- 简单讲解关于调整 miniprogram 后, tabbar 找不到图片的原因之一
- 问题出现的原因
- 错误提示
- 出现错误疑惑点
- 错误原因
- 正确写法
- 总结
简单讲解关于调整 miniprogram 后, tabbar 找不到图片的原因之一
问题出现的原因
- 当我开发微信小程序一段时间后,就准备使用npm导包依赖第三方库,导包之前就调整了一下项目结构,把所有源码放到 miniprogram 文件夹下,在
project.config.json
中配置了"miniprogramRoot": "miniprogram/"
,项目此时是正常的。 - 当我把图片也归整了一下,把tabbar图片,从 /miniprogram/images/ 文件夹下,迁移到新建的 /miniprogram/assets/tabbar/ 文件夹下,在 app.json 中的 tabbar 位置修改了图片路径,再次编译,
此时就报错了
错误提示
[ miniprogram/app.json 文件内容错误] miniprogram/app.json: ["tabBar"]["list"][0]["iconPath"]: "/miniprogram/assets/tabbar/icon_main_home.png" 未找到 ... ...
修改之前的代码片段:
"list": [
{
"pagePath": "pages/main-home/home",
"text": "首页",
"iconPath": "images/icon_main_home.png",
"selectedIconPath": "images/icon_main_home_active.png"
},
{
"pagePath": "pages/main-mine/mine",
"text": "我的",
"iconPath": "images/icon_main_mine.png",
"selectedIconPath": "images/icon_main_mine_active.png"
}
],
调整源码到 miniprogram 文件夹,并且又调整了图片目录结构,此时报错了
,代码片段:
"list": [
{
"pagePath": "pages/main-home/home",
"text": "首页",
"iconPath": "/miniprogram/assets/tabbar/icon_main_home.png",
"selectedIconPath": "/miniprogram/assets/tabbar/icon_main_home_active.png"
},
{
"pagePath": "pages/main-mine/mine",
"text": "我的",
"iconPath": "/miniprogram/assets/tabbar/icon_main_mine.png",
"selectedIconPath": "/miniprogram/assets/tabbar/icon_main_mine_active.png"
}
],
出现错误疑惑点
- 路径完全正确
- 点击图片路径也能正常跳转到图片
- 看着与调整项目之前并没什么区别
- 不能使用
../
调用父级,我就使用/
直接从文件根目录写
以上几点是我一开始觉得,什么都对了,什么也都试了,为什么还出错误呢?
错误原因
- 调整项目后,在
project.config.json
中配置了"miniprogramRoot": "miniprogram/"
,此时的根目录就是当前 app.json 的位置,asset 文件夹与 app.json 文件同级。 - 在
"/miniprogram/assets/tabbar/icon_main_home.png"
配置中的地址第一个/
代表的就是miniprogram/
,把当前配置项的图片地址翻译完整为miniprogram/miniprogram/assets/tabbar/icon_main_home.png
故而微信开发者工具提示图片未找到
的错误
正确写法
- 因为项目的根目录已经在
project.config.json
中配置了"miniprogramRoot": "miniprogram/"
,项目根路径/
就代表是miniprogram/
文件夹。 - 又因为 app.json 配置文件 与 assets 文件夹在同级,在 app.json 配置文件中,tabbar 图片路径地址可直接写 assets/tabbar/icon_main_home.png,或者在地址前添加
./
或/
就可以了。
正确的代码片段:
"list": [
{
"pagePath": "pages/main-home/home",
"text": "首页",
"iconPath": "assets/tabbar/icon_main_home.png",
"selectedIconPath": "assets/tabbar/icon_main_home_active.png"
},
{
"pagePath": "pages/main-mine/mine",
"text": "我的",
"iconPath": "assets/tabbar/icon_main_mine.png",
"selectedIconPath": "assets/tabbar/icon_main_mine_active.png"
}
],
总结
- 在
project.config.json
中配置了"miniprogramRoot": "miniprogram/"
,就代表小程序的根目录为miniprogram/
- 在开发项目时,使用
/
对资源文件的调用,就指的是miniprogram/
文件夹 - 在了解配置的真正含义,并充分了解配置所带来的项目变化,掌握其开发规范,以及注意事项,在开发过程中,就会避免踩很多坑