uni-app npm包引用包内图片,原生APP云打包apk图片无法显示(运行时H5、小程序、APP均正常)
uni-app npm包引用包内图片,原生APP云打包apk图片无法显示(运行时H5、小程序、APP均正常)
操作步骤:
- 项目中依赖npm包,npm包内组件引用包内图片资源,进行原生APP-云打包
预期结果:
- npm包内图片资源,原生APP-云打包出来的应用能正常显示图片
实际结果:
- npm包内图片资源,原生APP-云打包出来的应用无法显示图片
bug描述:
附件图片中红框内的npm包,包内组件引用了assets目录图片资源(相对路径),原生APP-云打包生成的apk安装后,app内图片无法显示出来。 注意:运行时,无论在H5,微信小程序,安卓模拟器(夜神),安卓真机,图片显示都是正常的! 开发环境产生的app目录结构 和 生产环境产生的app目录结构 不一致。生产环境下会移除node_modules目录
| 开发环境 | 版本号 | 项目创建方式 |
|---|---|---|
| HBuilderX | 3.1.22 | HBuilderX |

更多关于uni-app npm包引用包内图片,原生APP云打包apk图片无法显示(运行时H5、小程序、APP均正常)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这个问题难道没人能来说下吗?
更多关于uni-app npm包引用包内图片,原生APP云打包apk图片无法显示(运行时H5、小程序、APP均正常)的实战教程也可以访问 https://www.itying.com/category-93-b0.html
同样的代码,在开发环境跑起来没任何问题(H5,小程序,App),生产环境下就产生问题了,是否能保持前后一致,提供下配置参数来解决这个问题
调试了你们webpack file-loader配置 无论 开发环境 生产环境,publicPath outputPath 配置输出是一致的,图片是有进行处理的,但是最终整合成.apk时,是否是主动移除了node_modules目录,这个点无法验证
缺失的 node_modules 目录,添加到反编译后的apk assets\apps\AppID\www 目录内,然后重新打包 重新签名,安装后图片竟然是可以正常显示的,就搞不懂打包后为啥要把 node_modules 目录去掉(难道是ios有兼容问题?) 贼难受哦 hbuilderx uni-app的作者们
这个问题是由于云打包时npm包内的图片资源没有被正确复制到apk中导致的。开发环境下图片正常显示是因为直接引用了node_modules中的资源,但生产打包时会移除node_modules目录。
解决方案:
-
将图片资源放在static目录(推荐) 将npm包中引用的图片复制到项目的static目录下,然后修改引用路径为绝对路径
/static/xxx.png -
使用require动态引入 在组件中使用require动态引入图片:
<image :src="require('@/node_modules/包名/assets/图片名.png')" /> -
配置copy-webpack-plugin 在vue.config.js中配置webpack,将npm包中的图片复制到打包目录:
const CopyWebpackPlugin = require('copy-webpack-plugin') module.exports = { configureWebpack: { plugins: [ new CopyWebpackPlugin([ { from: 'node_modules/包名/assets', to: 'static/npm-assets' } ]) ] } }


