【发布时间】:2015-08-11 06:22:29
【问题描述】:
我查看了一些关于 JavaScript 报告意外令牌但未提供有用行号的问题(localhost/index.html 的第 1 行是“”):
现在我看到了许多“未捕获的语法错误”的帖子,但我想退后一步,不仅要问我当前的代码有什么问题(React JSX 位于 http://pastebin.com/P3Epzi0q,HTML 位于http://pastebin.com/0abjnmZz 不是特别有趣),但是如何最好地确定在处理“未捕获的语法错误”时该怎么做,该错误仅包括与罪魁祸首无关的归因。 除了使用断点和单步执行之外,我目前的尝试是深入了解它在我的代码中发生的位置。我正在加载包括 Showdown、jQuery 和 ReactJS 在内的外部源,但在我的代码中的两个 console.log() 语句之间发生了崩溃: 这仍然是一个非常大的领域,我正在深入研究,看看我可以放置崩溃前发生的 console.log() 语句的最后一个位置,以及我可以放置的最早位置是什么没有发生的 console.log() 语句,只是崩溃。 除了 Chrome 调试器可能更精巧(或者这就是答案?)之外,判断问题出在哪里的最佳方法是什么?是否有一个 linter 可以提供更多有用的诊断信息,尤其是故障的行号? 也许这个问题属于programmers.stackexchange.com,但似乎有关于未捕获的SyntaxErrors的重复问题,并且响应已经指出代码sn-ps中的错误但没有(据我所知)解释如何在没有有用的行号时查明故障。 我目前隐约受到二进制搜索启发的使用向下钻取记录是最佳路线吗?有更好的吗? 谢谢,Uncaught SyntaxError: Unexpected token u localhost:/1
console.log("Reached 10");
React.render(<Pragmatometer />,
document.getElementById('main'));
console.log("Reached 11");
【问题讨论】:
-
你可以使用调试器来单步调试代码
-
正如@Rooster 所说,根据您的描述,您只想在调试器中熟悉 F11。 “专业版”提示:如果您使用的是CDN,然后继续调试到你的
React.render();调用。在调试时随意console.log那些本地文件,然后完成后恢复为原始文件。但是,当您可以使用 Chrome 或 Firefox(或 IE 等)调试器进行单步调试时,通常没有很好的理由使用console.log进行调试。 -
快速抛开:你不是在寻找一个 linter。您应该对代码进行 lint,这可能会出现导致此问题的错误,当然。但是,如果错误发生在 lib 内部,您需要的是一个跟踪实时执行上下文的调试器,而不是 linter,它可以确保您的代码 在执行之前遵循某些实践。
-
感谢@all 的建议。进入调试器...
标签: javascript debugging jslint javascript-debugger