我正在处理JavaScript应用程序而我正在尝试修复错误,但我无法找到它。这就是我所拥有的。
function my_function (txt) {
try {
return eval('('+ txt + ')');
}
catch(e) {
alert(e.lineNumber);
return eval(txt);
}
我将文件内容传递给该函数,似乎此文件中存在问题。问题是这一行
alert(e.lineNumber);
即使我在文件的开头添加行,总是返回相同的数字,所以我想确保我正在编辑正确的行。为此,我希望它显示包含错误的行的内容。
请帮帮我。
答案 0 :(得分:0)
您可以使用e.stack打印stacktrace
....
catch(e) {
alert(e.lineNumber);
console.log(e.stack)
return eval(txt);
}
答案 1 :(得分:0)
基本上有两种情况: - 如果是语法错误,则错误将被报告为触发它的“eval”调用的位置(不是“源”文件中的位置), - 如果它是语义错误(解析但在运行时失败),那么请查看http://eriwen.com/javascript/js-stack-trace/以获得有关跨浏览器堆栈转储的一些想法。
要调试第一种情况,您可能必须捕获文件内容并尝试单独解析它(可能使用节点或jsl)。
我不太清楚你要做什么,但我不得不说代码示例提出了一些问题(为什么eval不是JSON.parse,为什么读取文件然后eval而不是包含它并调用函数,第二个评估是什么。
答案 2 :(得分:0)
捕获脚本文本,如有必要,使用console.log (txt)
并将输出复制粘贴到文件中。将<script>
放在该文件的顶部,将</script>
放在底部。使文件名以.html
结尾。现在双击该文件图标。这将启动您的浏览器,该浏览器将读取脚本并将任何语法错误输出到浏览器控制台,显示它们出现的行号。