stf报错问题汇总

Cannot read property ‘$code’ of undefined

TypeError: Cannot read property '$code' of undefined
    at Object.transaction (/Users/renzhicheng/Documents/renzhicheng/mirage/lib/wire/util.js:35:34)
    at Socket.<anonymous> (/Users/renzhicheng/Documents/renzhicheng/mirage/lib/units/websocket/index.js:1080:24)
    at emitThree (events.js:136:13)
    at Socket.emit (events.js:217:7)
    at /Users/renzhicheng/Documents/renzhicheng/mirage/node_modules/socket.io/lib/socket.js:514:12
    at _combinedTickCallback (internal/process/next_tick.js:131:7)
    at process._tickCallback (internal/process/next_tick.js:180:9)

代码指向lib/wire/util.js

, transaction: function(channel, message) {
    return new wire.Envelope(
        message.$code  //$code undefind
      , message.encode()
      , channel
      )
      .encodeNB()
  }

源头:lib/unit/websocket/index.js 要传一个probuf消息

push.send([
            channel
            , wireutil.transaction((
              responseChannel
              , new wire.OpenWebDebugMessage()
            ))
          ])

wireutil.transaction接收的是channel和message两个参数, 而看我贴的websocket index.js里面 transaction后面多加了括号,就变成了 ( responseChannel , new wire.OpenWebDebugMessage() ) 这样的一个对象,传过去了 。 就因为手滑。。。浪费了一小时在上面。。。不得不感叹机器编程要比人工在精细度上好很多,人工太容易出错了。

但也有部分原因是之前对stf操作protobuf这块没有细细研究, 不清楚 message. c o d e 是 哪 里 初 始 化 赋 值 的 , 然 后 看 到 l i b / w i r e / i n d e x . j s 里 面 有 个 ‘ R e v e r s e M e s s a g e T y p e ‘ 函 数 对 code是哪里初始化赋值的,然后看到lib/wire/index.js里面有个`ReverseMessageType`函数对 codelib/wire/index.jsReverseMessageTypecode有操作,有被迷惑了方向。

其实, $code是在wire.proto里面在MessageType枚举变量里添加一项时, $code就是这一项的赋予的枚举值。如GroupMessage = 10;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值