微信小游戏子域中请求微信头像,cocos create会自动添加前缀的问题
在微信小游戏中获取到了头像url之后,打算使用cc.loader.load进行加载
但是请求出去的时候,会在url前面添加子域目录:
像这样
https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83epNsiabVVcQSduPLHdBicZJMIn4ogY46KrOP2rZwJngjYeP7YdYaeuaAKa0ibq3OjCunYOH3SjWzPcQQ/0
变成了
http://127.0.0.1:50439/game/wx-sub-test/https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83epNsiabVVcQSduPLHdBicZJMIn4ogY46KrOP2rZwJngjYeP7YdYaeuaAKa0ibq3OjCunYOH3SjWzPcQQ/0
然后就报这个错误:
0:1 GET http://127.0.0.1:50439/game/wx-sub-test/https://wx.qlogo.cn/mmopen/vi_32/DYAIOgq83epNsiabVVcQSduPLHdBicZJMIn4ogY46KrOP2rZwJngjYeP7YdYaeuaAKa0ibq3OjCunYOH3SjWzPcQQ/0?aaa=aa.jpg 404 (Not Found)
Image (async)
w @ WAGameSubContext.js:4
(anonymous) @ cocos2d-js.c822e.js:26272
downloadImage @ cocos2d-js.c822e.js:26273
errorCallback @ cocos2d-js.c822e.js:26268
(anonymous) @ WAGameSubContext.js:4
VM1253:1 gameThirdScriptError
fs.unlink is not a function
TypeError: fs.unlink is not a function
at http://127.0.0.1:50439/game/wx-sub-test/libs/wx-downloader.js:162:16
at LoadingItems.190.CallbacksInvoker.invoke (http://127.0.0.1:50439/game/wx-sub-test/cocos2d-js.c822e.js:33230:66)
at LoadingItems.139.proto.itemComplete (http://127.0.0.1:50439/game/wx-sub-test/cocos2d-js.c822e.js:26792:12)
at Function.139.LoadingItems.itemComplete (http://127.0.0.1:50439/game/wx-sub-test/cocos2d-js.c822e.js:26661:22)
at CCLoader.142.proto.flowOut (http://127.0.0.1:50439/game/wx-sub-test/cocos2d-js.c822e.js:27061:20)
at http://127.0.0.1:50439/game/wx-sub-test/cocos2d-js.c822e.js:26978:22
at http://127.0.0.1:50439/game/wx-sub-test/cocos2d-js.c822e.js:26395:23
at errorCallback (http://127.0.0.1:50439/game/wx-sub-test/cocos2d-js.c822e.js:26268:163)
at Image.<anonymous> (http://127.0.0.1:50439/game/__subdev__/WAGameSubContext.js:4:8234)
问题源:
在子域libs文件夹下面的wx-downloader.js这个文件,里面有这么一段,会自动跟上前缀。
WXDownloader.prototype.handle = function (item, callback){...if (isSubdomain) {item.url = this.SUBCONTEXT_ROOT + '/' + item.url;if (item.type && non_text_format.indexOf(item.type) !== -1) {nextPipe(item, callback);return;}}...
}
解决方案:
判断url如果是http打头的,就当成网络资源,就不需要进行url重写了。
都是针对刚刚那个文件进行修改,2处地方修改的地方都是添加 if-else判断,可以和源文件对比下。
步骤一:修改WXDownloader.prototype.handle的url判断方式
步骤二:修改downloadRemoteFile中的代码
WXDownloader.prototype.handle = function (item, callback) {if (item.type === 'js') {callback(null, null);return;}if (item.type === 'uuid') {var result = cc.Pipeline.Downloader.PackDownloader.load(item, callback);// handled by PackDownloaderif (result !== undefined) {// null resultif (!!result) {return result;}else {return;}}}var filePath = item.url;if (item.url.indexOf('http') === 0) {//网络图片,直接downloaddownloadRemoteFile(item, callback);
}else{if (isSubdomain) {item.url = this.SUBCONTEXT_ROOT + '/' + item.url;if (item.type && non_text_format.indexOf(item.type) !== -1) {nextPipe(item, callback);return;}}// Read from packagefs.access({path: filePath,success: function () {if (item.type && non_text_format.indexOf(item.type) !== -1) {nextPipe(item, callback);}else {readText(item, callback);}},fail: function (res) {readFromLocal(item, callback);}});
}
};
function downloadRemoteFile (item, callback) {// Download from remote servervar relatUrl = item.url;// filter protocol url (E.g: https:// or http:// or ftp://)if (REGEX.test(relatUrl)) {callback(null, null);return}var remoteUrl ='';if (relatUrl.indexOf('http') === 0) {remoteUrl = relatUrl;}else{remoteUrl = wxDownloader.REMOTE_SERVER_ROOT + '/' + relatUrl;}item.url = remoteUrl;...
}
这样直接修改打包出来的项目文件,当然也可以直接修改模板文件,将下面这个文件夹的文件替换掉
如:D:\APPDate\CocosCreator_v1.9.1-rc.1\resources\static\build-templates\wx\libs
微信小游戏子域中请求微信头像,cocos create会自动添加前缀的问题相关推荐
- 微信小程序的网络请求 —— 微信小程序教程系列(14)
网络请求,基本上是必须的环节之一. 小程序提供了wx.request(object),与开发者的服务器实现数据交互的一个很重要的api. 最简单的用法如下(以GET请求为例) <view bin ...
- 微信小游戏申请注册流程+开发微信小游戏类目需要具备条件
微信小游戏申请注册流程+开发微信小游戏类目需要具备条件 在这里先讲一下,小程序和小游戏前面的注册流程都是一样的,在注册完毕登录小程序后台后选择类目时需要注意一下,我下面讲解的是已经通过认证的服务号进行 ...
- cocos微信小游戏开发-http请求-使用微信云函数-toast-loading-动态加载图片-添加触摸事件-微信分享-label点击事件-背景音乐音效-程序活动状态判断-性能优化
cocos开发微信小游戏相关-<益智推箱> 扫码查看功能,有需要可直接提问 Cocos Creator 3.4 用户手册 cocos creator基本操作 微信开发文档|云函数 1. h ...
- protobuf 微信小程序_Protobuf在微信小游戏开发中的使用技巧
微信小游戏发布后,许多 HTML5 游戏开发者希望把现有的 HTML5 游戏迁移到微信小游戏中,但由于一些技术上的问题导致进程卡壳.通过梳理Egret社区.白鹭小游戏开发技术讨论群等途径的反馈后发现, ...
- unity开发微信小游戏(5)- 微信好友排行榜
效果展示: 如果感觉文章有用的,也烦请大家多多支持(扫描上面二维码n(*≧▽≦*)n)!!❤❤❤ unity开发微信好友排行榜可以说是把我虐的体无完肤,但为了拿下这功能,硬壳了三天,把我所踩过的坑分享 ...
- 微信小游戏服务器数据持久化,微信小程序wx.setStorage数据缓存实现缓存过期时间...
为了项目性能等方面的考虑,有时候有必要为用户经常访问的页面使用缓存机制:在技术上,服务端和前端都有相应的缓存机制.比如传统的session及cookie等等,在微信小程序中,并没有cookie机制,但 ...
- Creator+微信小游戏:(1) 获取微信登录信息
目录 准备 开始 代码讲解 获取用户信息 下载图片 完整示例代码 本教程以Cocos Creator讲解如何获取微信用户的基本信息. 最常用的信息是:昵称(字符串),头像(图片). 准备 你应该准备好 ...
- 微信小游戏计算机算题,微信小程序学习:简易计算器
昨天刚刚接触的微信小程序,写了个计算器demo,因为自身有一点前端的基础,所以看微信小程序的api时没有这么云里雾里,几乎跟前端没差太多,所以上手挺快,先上效果图 仿制iphone的计算器实现了+-* ...
- cocos creator 微信小游戏 子域分辨率、错位等问题
转载自 https://blog.csdn.net/cui6864520fei000/article/category/8841657 刚刚学习cocos creator,使用版本2.1.0 遇到关于 ...
最新文章
- Kafka背后公司获1.25亿融资,估值超25亿美元
- 第四章 Lync server 2010的安装
- 2021城市大脑与智能产业趋势简报第五期
- [php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
- MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用
- 顺序表基本操作函数总结
- Mayor's posters POJ - 2528 (离散化+线段树)
- 关于gitgithub的操作
- sql用java做界面设计_My Sql作为数据库,java作为应用程序?
- 【ImageNet】数据集1000个类的名称,中文名称,ILSVRC2012数据集
- 无线扩音器FCC认证CE认证需要满足那些要求
- Java如何在一行内输入若干个整数
- python数据科学包第三天(股票数据分析、时间事件日志)
- Google搜索语法(常用篇)
- Java实现一个打飞机的小游戏【附源码】
- 昨晚,散场后………他们流着泪唱着《笔记》……………
- 华三模拟器 HCL v5.3.0 使用第三方控制台(SecureCRT、XShell、MobaXterm)教程
- 硬盘挂载 mount 详细步骤及遇到问题“Mount is denied because the NTFS volume is already exclusively opened”
- 表格头固定而列可滚动的效果
- Incomplete chess boards 有趣.
热门文章
- SpringBoot Tomcat 配置https 且443端口也是https(若依为例对接微信小程序的https,小程序也可以访问)
- Flutter开发之——Card
- ad7793编程c语言,AD7793在高精度温控设备中的应用
- python动作捕捉_树莓派动作捕捉抓拍存储图像脚本
- 【锁】悲观锁与乐观锁实现
- matlab function调用m文件,matlab下编写和调用函数(在同一个m文件中)
- 测开高阶技术- Docker/环境布置/容器 讲清楚了,全套教程
- 动手实现一个跑步小程序
- 联想r720安装固态_联想拯救者r720笔记本NVME接口M.2固态硬盘怎么安装win7系统
- 欧拉路和欧拉回路知识