关于 集成官方protobuf 报错TypeError: Cannot read property 'navigator' of undefined的解决方案

项目原来用1.3.2创建的并集成了官方的protobuf,后来生到1.4.0,使用也没有问题,然后升级到1.4.2,一直使用没有问题,今天不知道怎么了,突然报 TypeError: Cannot read property ‘navigator’ of undefined,一直找不到原因,一下午的时间就这么过去了(差点重做系统。。。),最后经过跟同事的对比,终于找到了问题 。。。。
如果你集成了官方的protobuf,遇到这个问题,可以使用我修改后的文件,替换一下
注,protobuf为3.2.0版本
google-protobuf.js.zip (33.0 KB)

1赞

补充一下,
由于protoc生成的协议都带require 即 var jspb = require(‘google-protobuf’);
所以没有导入为插件,协议等都没有导入插件

所以你修改了什么?

第一行里



这两处

哦…… 明白了,不导入为插件的锅。

啊呀,我之前也遇到了这个问题。你移动或者改变这个protobuf脚本(只要刷新了这个脚本),就会触发这个问题。我解决的办法是直接用的源码。没想到竟然是 不导入为插件的锅。

还是不太清楚怎么使用,能不能提供个简单的示例学习一下

参考 http://www.cocos.com/docs/creator/scripting/plugin-scripts.html
实例的话参考官方自带范例里的 socket.io.js

你们使用protobuf有没有碰到文件过大的问题?
我们的协议文件生成的js有5MB,而使用protobuf.js的脚本加json才不到1MB.

话说,今天升到1.6正式版本,并没有什么问题呢。。。

1.5 到1.6 还是要改的啊

我是1.5直接升到1.6正式版,直接就可以使用~

我不行,你随便改下 google-protobuf 这个文件,然后保存刷新试试

昨天creator升到1.6.1有问题,今天换成1.6.0还是有问题,protobuf换成你的3.2.0的版本也还是会出现这个问题

我这里已经升级到1.6.0正式版本了,并没有这个问题呀。。。
一直用的好好的。。。

不知道问题出在哪里,又回退到1.5.2了

改一下源文件,1.6 里面脚本加载时的 this 有所更改,你把 this.navigator 改成 window.navigator 即可

过几天试下,先处理眼前的事情

https://forum.cocos.com/t/cocos-creator1-8-google-protobuf/55185