<script src="https://cdn.firebase.com/js/client/2.0.6/firebase.js"></script>
<script>
var root_ref = new Firebase('https://jcatest.firebaseio.com')
function other_function() {
// many lines of code here...
var x = {}
x.x()
// many lines of code here...
}
function my_function(snap){
other_function()
}
root_ref.once('value', my_function)
</script>
如果我将上述代码粘贴在html文件中并使用Chrome打开它,我在控制台中看到的是 &#34; Uncaught TypeError:undefined不是函数... firebase:26&#34;
在Firefox中,我看到实际的错误消息:
&#34; TypeError:x.x不是函数... temp.html:8&#34;
为什么我在Chrome中没有看到正确的错误消息?
这是Chrome的错误吗?一个Firebase错误?或者我做错了什么?
对我来说这是一个很大的问题,因为我的回调和firebase中的很多代码基本上都在说,&#34;某处出现了错误。&#34;不是很有帮助。
答案 0 :(得分:3)
在Firebase网络客户端中,Firebase.DataSnapshot
对象没有方法value()
,但有val()
方法,这可能是您正在寻找的方法。
有关详细信息,请参阅DataSnapshot文档。
我怀疑浏览器没有给你相关的错误行,因为错误发生在匿名函数中,但这是猜测。
答案 1 :(得分:3)
此问题在FirebaseJS版本2.0.6上可重现。使用Firebase 2.2.2,可以在两个浏览器上正确报告错误和完整堆栈跟踪。
答案 2 :(得分:1)
如果将回调包装在零ms setTimeout调用中,则会获得回溯。不确定为什么这是必要的。
root_ref.once('value', function(){ setTimeout(my_function) })