默认
发表评论 11
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
[已回复] 求助uni-app中引入MobileIMSDK-Web开发的IM相关文件后app白屏
开发h5端使用uni-app并引入im原生js文件以及socket.io后正常运行,可以正常打包成静态页面部署到服务器并正常打开,但是打包成app后或者在真机环境下运行打包app白屏并报错,在注销掉引入im的路径后项目正常启动,是不是因为我引入socket.io的方式不对?还是im代码中有不支持移动端的写法?求助!

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

WechatIMG266.png (300.02 KB, 下载次数: 1584)

socket引入方式

socket引入方式

WechatIMG265.png (292.79 KB, 下载次数: 1589)

app端报错信息

app端报错信息
推荐方案
评论 11
请问楼主uni-app App端聊天可以跑起来吗?
请问楼主是怎么引用到uni-app的?我引用进去一直报错undefined。。。。。。
引用:IvanGitZ 发表于 2019-11-07 15:22
服务器端:我用的是python-flask作为服务器,uni-app框架只能使用Flask-Sockets库【Flask-SocketIO不支持 ...

在一些并不是特别主流的框架里用websocket这类技术,确实有点烦,必须支持的程度都不一样,更别说开源框架的支持了,因为名气根本不够。如果一定要这样整的话,只能自已动手改造了
引用:JackJiang 发表于 2019-11-03 22:39
那估计得用uni-app里的相应对象替换掉了,必竟uni-app这类混合框,自带的网页引擎都是阉割和修改版,并非 ...

服务器端:我用的是python-flask作为服务器,uni-app框架只能使用Flask-Sockets库【Flask-SocketIO不支持,原因参考:https://blog.csdn.net/weixin_43343144/article/details/92801617


研究了一周,最后找到一句多么令人悲伤的话,使用uni.connect连接测试用flask-sockets库起的服务端,可以成功,一直都是服务端的问题
引用:IvanGitZ 发表于 2019-11-03 21:58
socket.io里面有document.createElement的方法,而uni-app中指出不能使用window,document,location此类 ...

那估计得用uni-app里的相应对象替换掉了,必竟uni-app这类混合框,自带的网页引擎都是阉割和修改版,并非web标准版。

你可以参考一下这个微信小程序版的sockeet.io库:https://github.com/10cella/weapp.socket.io,因为微信小程序引擎也是个阉割和修改版,它里面也没有window这样的对象(小程序的全局对象名貌似是叫app)。你理解一下,然后举一反三
引用:JackJiang 发表于 2019-11-03 19:56
那看来,你修改后,socket.io.js引用是没有问题了。

按照异常日志里的提示,你看看mobileimsdk-client ...

socket.io里面有document.createElement的方法,而uni-app中指出不能使用window,document,location此类对象,这个问题您有解决思路吗?
引用:IvanGitZ 发表于 2019-11-03 19:21
npm install socket.io之后在页面引入,mobileimsdk-client-sdk将IMSDKexport出去后,报io未定义

那看来,你修改后,socket.io.js引用是没有问题了。

按照异常日志里的提示,你看看mobileimsdk-client-sdk.js的196行为什么在你的uni-app下会报错。

只能按照错误提示一个一个去核实了。

另外,为何你测试环境可以,打成app却不可以,你用的uni-app框架,有这两种运行方式方面的差异说明吗?你查一下他们官方的手册,看看能不能找出什么线索
引用:IvanGitZ 发表于 2019-11-03 19:21
npm install socket.io之后在页面引入,mobileimsdk-client-sdk将IMSDKexport出去后,报io未定义

通过socket.io-client引入后解决了not define,但是又报了IMSDK.getLoginInfo().loginUserId  is not an object的错
引用:JackJiang 发表于 2019-11-03 18:52
socket.io.js的引用,有点特殊,这是socket.io这个库的官方开发时决定的,具体请详细读一下我在这个帖子《[ ...

npm install socket.io之后在页面引入,mobileimsdk-client-sdk将IMSDKexport出去后,报io未定义

WechatIMG267.png (233.49 KB, 下载次数: 1572)

引入socket报错

引入socket报错
socket.io.js的引用,有点特殊,这是socket.io这个库的官方开发时决定的,具体请详细读一下我在这个帖子《[已解决] MobileIMSDK-Web导入到自己的web中,浏览器端的socket.io.js如何导入啊》,2楼的回复。

至于你说的require会报错,MobiileIMSDK相关的js,都是最原生的js实现,没有使用任何复杂的技巧或封装,只要你引用一般的js能用,mobileimsdk-web就能用,这个估计你得排查一下是不是你的用法上有什么情况。
最新的进展:发现只要是require引入的文件都会报错
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部