1

我有过去可以工作的代码,并且仍然可以与最新的 SDK 1.8.3 一起工作,但是在生产中它不再工作了。它在这里失败了:

ch = new goog.appengine.Channel(token);
ch.open();  <--- this never returns

浏览器调试器显示下面的堆栈跟踪。来自生产环境的 channek.js 代码https://talkgadget.google.com/talkgadget/channel.js

Uncaught TypeError: Cannot read property 'removeEventListener' of undefined [VM] channel.js (18280):22
Qb [VM] channel.js (18280):22
cb [VM] channel.js (18280):14
g.Ma [VM] channel.js (18280):30
Zd [VM] channel.js (18280):88
ae [VM] channel.js (18280):87
$ [VM] channel.js (18280):95
ge.open [VM] channel.js (18280):100
reset 062a630fa51c7bd829554631f0939936-school_swapp.js:1
(anonymous function)

在 SDK 的情况下,我还看到一些随机的 javascript 堆栈跟踪,如下所示,但使用 SDK,代码按预期工作。我提到这一点是为了完整性,以防有人发现问题。

Uncaught TypeError: Cannot call method 'markAsRemoved' of undefined jsapi:3069
goog.events.ListenerMap.removeAll jsapi:3069
goog.events.EventTarget.removeAllListeners jsapi:3159
goog.events.EventTarget.disposeInternal jsapi:3142
goog.net.XhrIo.disposeInternal jsapi:4915
goog.Disposable.dispose jsapi:2538
goog.net.XhrIo.cleanupSend_ jsapi:4841
goog.events.EventTarget.fireListeners jsapi:3171
goog.events.EventTarget.dispatchEventInternal_ jsapi:3207
goog.events.EventTarget.dispatchEvent jsapi:3138
goog.net.XhrIo.cleanUpXhr_ jsapi:4955
goog.net.XhrIo.onReadyStateChangeHelper_ jsapi:4943
goog.net.XhrIo.onReadyStateChangeEntryPoint_ jsapi:4927
goog.net.XhrIo.onReadyStateChange_
4

2 回答 2

2

我明白了这一点。如果您在 javascript 中的某处添加任何类似下面的方法

Object.prototype.foobar = function() {}

然后我在问题中描述的问题发生了!!!删除/更改此类代码解决了该问题。对我来说,这听起来像是生产 channel.js 代码中的一个错误。

于 2013-09-11T07:35:46.907 回答
0

我的频道 API 工作正常。

我想我已经看到关于 SO 的其他评论,关于使用版本 X 创建的应用程序的频道不适用于使用版本 Y 创建的频道,这就是你遇到的问题吗?

于 2013-09-10T15:50:46.277 回答