JavaScript控制台中的类型错误(TypeError)

4

我在Chrome的JavaScript控制台中遇到了一个错误

TypeError: Cannot call method 'xxx' of undefined

在Firefox中,Firebug可以生成报告:

TypeError: t is undefined

T和xxx只是一个例子。

我正在工作的网站中充斥着插件、jQuery和其他随意而可能存在问题的代码。它很复杂,也许没有必要列出所有的javascript代码。

所以我的问题是:在这种情况下,我如何将错误追溯到有问题的代码段?并且,这是否可能?考虑到众多的变量,对我来说T和xxx毫无意义。

Chrome似乎更有见识,具有诸如获取stackset stackmessage__proto__等错误属性,但展开这些属性似乎只会使我进入一个无限循环的prototype > constructor > prototype > constructor ...的旅程,令人疲惫不堪。

这些错误消息能否引导我找到一些有用的信息,例如错误发生的确切位置-哪个文件、哪个变量、函数名称等等?

我意识到这可能是一个相当基本的问题,但我卡住了。任何提示或指针都将不胜感激!我保证在此之后会读更多的Javascript书籍。也许去上个课程。或者我可能放弃...


1
点击错误,它会带您到代码(在FireBug中,任何console.log和错误都显示在右侧)。如果来自jquery,则更有可能是由于您的代码调用了jQuery函数而导致的错误。获取未压缩版本,在错误处中断并检查调用堆栈。 - HMR
1
哦...我使用了一些插件的未压缩版本,,它开始工作了。主要问题似乎是一个叫做jCarousel的东西。事实上,我不知道我在做什么。而且我已经连续两天没睡觉了,因为我的项目经理预测星期天就是世界末日。如果你回答了这个问题,我会给你打勾 - 谢谢! - NathanBarley
我会在我的答案中添加它。很高兴看到问题已经解决了。 - HMR
1个回答

3
在Firebug中,转到脚本选项卡,然后点击“下一个断点”(左侧红圆圈)。当出现JavaScript错误时,将会在此暂停执行脚本。您可以选择堆栈选项卡(右圆圈)。在调用堆栈中,您可以单击行,这将带您进入代码。
如果您仍无法确定导致错误的原因,请复制并粘贴调用堆栈。
有时,您可能想要查看第三方库正在做什么;在开发过程中使用未压缩版本的这些库更容易了解情况。
火狐浏览器控制面板窗口如下图所示:Firebug window

更好的是 - "在下一步停止"。太棒了,感谢兄弟们。已解决1个问题,还有86个问题要解决。 - NathanBarley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接