默认

[已回复] 求助uni-app中引入MobileIMSDK-Web开发的IM相关文件后app白屏

查看数: 44015 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-11-03 18:20

正文摘要:

开发h5端使用uni-app并引入im原生js文件以及socket.io后正常运行,可以正常打包成静态页面部署到服务器并正常打开,但是打包成app后或者在真机环境下运行打包app白屏并报错,在注销掉引入im的路径后项目正常启动,是 ...

评论

房东的小老鼠 发表于 4 年前
请问楼主uni-app App端聊天可以跑起来吗?
房东的小老鼠 发表于 4 年前
请问楼主是怎么引用到uni-app的?我引用进去一直报错undefined。。。。。。
JackJiang 发表于 5 年前
引用:IvanGitZ 发表于 2019-11-07 15:22
服务器端:我用的是python-flask作为服务器,uni-app框架只能使用Flask-Sockets库【Flask-SocketIO不支持 ...

在一些并不是特别主流的框架里用websocket这类技术,确实有点烦,必须支持的程度都不一样,更别说开源框架的支持了,因为名气根本不够。如果一定要这样整的话,只能自已动手改造了
IvanGitZ 发表于 5 年前
引用: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库起的服务端,可以成功,一直都是服务端的问题
JackJiang 发表于 5 年前
引用: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)。你理解一下,然后举一反三
IvanGitZ 发表于 5 年前
引用:JackJiang 发表于 2019-11-03 19:56
那看来,你修改后,socket.io.js引用是没有问题了。

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

socket.io里面有document.createElement的方法,而uni-app中指出不能使用window,document,location此类对象,这个问题您有解决思路吗?
JackJiang 发表于 5 年前
引用: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 发表于 5 年前
引用: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 发表于 5 年前
socket.io.js的引用,有点特殊,这是socket.io这个库的官方开发时决定的,具体请详细读一下我在这个帖子《[已解决] MobileIMSDK-Web导入到自己的web中,浏览器端的socket.io.js如何导入啊》,2楼的回复。

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

返回顶部