在微信小游戏中获取到了头像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;...
}

这样直接修改打包出来的项目文件,当然也可以直接修改模板文件,将下面这个文件夹的文件替换掉

"cocos create安装目录"\resources\static\build-templates\wx\libs
如:D:\APPDate\CocosCreator_v1.9.1-rc.1\resources\static\build-templates\wx\libs 

微信小游戏子域中请求微信头像,cocos create会自动添加前缀的问题相关推荐

  1. 微信小程序的网络请求 —— 微信小程序教程系列(14)

    网络请求,基本上是必须的环节之一. 小程序提供了wx.request(object),与开发者的服务器实现数据交互的一个很重要的api. 最简单的用法如下(以GET请求为例) <view bin ...

  2. 微信小游戏申请注册流程+开发微信小游戏类目需要具备条件

    微信小游戏申请注册流程+开发微信小游戏类目需要具备条件 在这里先讲一下,小程序和小游戏前面的注册流程都是一样的,在注册完毕登录小程序后台后选择类目时需要注意一下,我下面讲解的是已经通过认证的服务号进行 ...

  3. cocos微信小游戏开发-http请求-使用微信云函数-toast-loading-动态加载图片-添加触摸事件-微信分享-label点击事件-背景音乐音效-程序活动状态判断-性能优化

    cocos开发微信小游戏相关-<益智推箱> 扫码查看功能,有需要可直接提问 Cocos Creator 3.4 用户手册 cocos creator基本操作 微信开发文档|云函数 1. h ...

  4. protobuf 微信小程序_Protobuf在微信小游戏开发中的使用技巧

    微信小游戏发布后,许多 HTML5 游戏开发者希望把现有的 HTML5 游戏迁移到微信小游戏中,但由于一些技术上的问题导致进程卡壳.通过梳理Egret社区.白鹭小游戏开发技术讨论群等途径的反馈后发现, ...

  5. unity开发微信小游戏(5)- 微信好友排行榜

    效果展示: 如果感觉文章有用的,也烦请大家多多支持(扫描上面二维码n(*≧▽≦*)n)!!❤❤❤ unity开发微信好友排行榜可以说是把我虐的体无完肤,但为了拿下这功能,硬壳了三天,把我所踩过的坑分享 ...

  6. 微信小游戏服务器数据持久化,微信小程序wx.setStorage数据缓存实现缓存过期时间...

    为了项目性能等方面的考虑,有时候有必要为用户经常访问的页面使用缓存机制:在技术上,服务端和前端都有相应的缓存机制.比如传统的session及cookie等等,在微信小程序中,并没有cookie机制,但 ...

  7. Creator+微信小游戏:(1) 获取微信登录信息

    目录 准备 开始 代码讲解 获取用户信息 下载图片 完整示例代码 本教程以Cocos Creator讲解如何获取微信用户的基本信息. 最常用的信息是:昵称(字符串),头像(图片). 准备 你应该准备好 ...

  8. 微信小游戏计算机算题,微信小程序学习:简易计算器

    昨天刚刚接触的微信小程序,写了个计算器demo,因为自身有一点前端的基础,所以看微信小程序的api时没有这么云里雾里,几乎跟前端没差太多,所以上手挺快,先上效果图 仿制iphone的计算器实现了+-* ...

  9. cocos creator 微信小游戏 子域分辨率、错位等问题

    转载自 https://blog.csdn.net/cui6864520fei000/article/category/8841657 刚刚学习cocos creator,使用版本2.1.0 遇到关于 ...

最新文章

  1. Kafka背后公司获1.25亿融资,估值超25亿美元
  2. 第四章 Lync server 2010的安装
  3. 2021城市大脑与智能产业趋势简报第五期
  4. [php错误]PHP中Notice: unserialize(): Error at offset of bytes in on line 的解决方法
  5. MQTT学习笔记——MQTT协议体验 Mosquitto安装和使用
  6. 顺序表基本操作函数总结
  7. Mayor's posters POJ - 2528 (离散化+线段树)
  8. 关于gitgithub的操作
  9. sql用java做界面设计_My Sql作为数据库,java作为应用程序?
  10. 【ImageNet】数据集1000个类的名称,中文名称,ILSVRC2012数据集
  11. 无线扩音器FCC认证CE认证需要满足那些要求
  12. Java如何在一行内输入若干个整数
  13. python数据科学包第三天(股票数据分析、时间事件日志)
  14. Google搜索语法(常用篇)
  15. Java实现一个打飞机的小游戏【附源码】
  16. 昨晚,散场后………他们流着泪唱着《笔记》……………
  17. 华三模拟器 HCL v5.3.0 使用第三方控制台(SecureCRT、XShell、MobaXterm)教程
  18. 硬盘挂载 mount 详细步骤及遇到问题“Mount is denied because the NTFS volume is already exclusively opened”
  19. 表格头固定而列可滚动的效果
  20. Incomplete chess boards 有趣.

热门文章

  1. SpringBoot Tomcat 配置https 且443端口也是https(若依为例对接微信小程序的https,小程序也可以访问)
  2. Flutter开发之——Card
  3. ad7793编程c语言,AD7793在高精度温控设备中的应用
  4. python动作捕捉_树莓派动作捕捉抓拍存储图像脚本
  5. 【锁】悲观锁与乐观锁实现
  6. matlab function调用m文件,matlab下编写和调用函数(在同一个m文件中)
  7. 测开高阶技术- Docker/环境布置/容器 讲清楚了,全套教程
  8. 动手实现一个跑步小程序
  9. 联想r720安装固态_联想拯救者r720笔记本NVME接口M.2固态硬盘怎么安装win7系统
  10. 欧拉路和欧拉回路知识