不会UNIApp
不会UNIApp
  • 发布:2019-09-10 18:24
  • 更新:2021-07-28 14:35
  • 阅读:2507

uni-app 中使用 SockJS 打包 App时 编译不通过

分类:uni-app

使用 scokJS 打包App 死活不通过,报错提示 没怎么懂?

console : [ERROR] reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->TypeError: undefined is not an object (evaluating 't.prototype')

console : getTemplateInfo== template md5 eada64470d6c9810f6ba99ba7ffbaa42 length 3024715 base64 md5 6tpkRw1smBD2upm6f/uqQg== response header {"templateSourceBase64MD5":["6tpkRw1smBD2upm6f/uqQg=="],"templateSourceMD5":["eada64470d6c9810f6ba99ba7ffbaa42"]}

2019-09-10 18:24 负责人:无 分享
已邀请:
不会UNIApp

不会UNIApp (作者)

在 manifest.json 中的 源码视图 将自定义组件模式关闭就可以编译了

"app-plus": { / 5+App特有相关 /
// "usingComponents" : true,
"splashscreen": {
"alwaysShowBeforeRender": true,
"waiting": true,
"autoclose": true,
"delay": 0
},

  • 左右摇摆

    这个方法不是长久之计啊

    2019-10-16 17:06

biaov

biaov - 不一样的人生,不一样的风采!

请问楼主解决了吗

  • 不会UNIApp (作者)

    在 manifest.json 中的 源码视图 将自定义组件模式关闭就可以编译了

    2019-11-22 09:30

  • 不会UNIApp (作者)

    不过uni-app官方马上就要弃用非自定义组件模式了,慎重

    2019-11-22 09:32

  • biaov

    回复 不会UNIApp: 那个自定义组件不能关,不然vue的一些东西不会支持,我现在的解决方法就是只能弃用SockJS

    2019-11-25 15:08

  • FakerLee

    回复 biaov: 不用SockJS,可以用啥代替?

    2020-03-23 17:17

  • biaov

    回复 FakerLee: 用uni封装的api

    2020-03-26 14:48

  • FakerLee

    回复 biaov: 后台用的也是sockjs的server,说换不了,别的端还要用,uni的API和后端的通不了

    2020-03-27 15:03

  • hmd

    回复 FakerLee: 楼主,找到替代方案没

    2020-08-12 18:32

1***@qq.com

1***@qq.com

mb这么坑,以前用过是没问题的最近又需要了,然而不通了我还以为代码问题呢

DCloud_heavensoft

DCloud_heavensoft

非自定义组件模式已经淘汰了。
这个库是for h5的库,不知道是否操作了dom或win,如果只是使用websocket,那没问题,uni-app的各端都支持websocket。
但如果使用了仅h5支持的dom或win或navigator等api,在非h5就用不了了。

websocket属于标准网络协议,不用sockjs不涉及到更换后端。

  • FakerLee

    用sockjs,连接成功的url后面会生成一个随机数,不用就没有随机数,然后连接后端失败。暂时还不知道为啥,可能是我学浅

    2020-04-09 14:17

1***@163.com

1***@163.com - ddd

是仅H5端支持sockjs吗

ConanLiu

ConanLiu

请问楼主最后用啥方法解决了?

8***@qq.com

8***@qq.com - test

我也遇到了这个问题,h5端正常,非H5端就不行,请求楼主怎么解决的

lisiurday

lisiurday

原因是 sockjs 内部使用了 json3 这个库,该库内部有这么一段代码:

var root = objectTypes[typeof window] && window || this  
...  
Object = context.Object || root.Object  
...  
objectProto = Object.prototype

微信真机环境在执行这段代码时,window 是 undefined 的,所以 root 值为 this 也即空对象,后续取到的 Object 是 undefined,再取prototype时就报错了。

我的临时解决方案就是不用 json3 ,也即把源码里所有 require('json3') 换成原生 JSON 对象,然后重新打包(顺便也把不用的transport 删掉了,减少了点体积)。

  • 罗魔什

    能把你修改过的sockjs发一下吗 vicoman@163.com ,谢谢!

    2021-09-05 06:35

  • 1***@qq.com

    可以发一下吗1720581067@qq.com

    2021-12-22 11:14

该问题目前已经被锁定, 无法添加新回复