0

我正在开发一个 JavaScript 应用程序,我正在尝试修复一个错误,但我找不到它。这就是我所拥有的。

 function my_function (txt) {
    try {
        return eval('('+ txt + ')');
    }
    catch(e) {
      alert(e.lineNumber);
      return eval(txt);
    }

我正在将文件的内容传递给函数,并且该文件中似乎存在问题。问题是这条线

          alert(e.lineNumber);

即使我在文件开头添加行也总是返回相同的数字,所以我想确保我正在编辑正确的行。为此,我希望它显示包含错误的行的内容。

请帮我。

4

3 回答 3

0

捕获脚本的文本,如有必要,使用console.log (txt)并将输出复制粘贴到文件中。将 a<script>放在该文件的顶部和</script>底部。使文件名以.html. 现在双击该文件图标。这将启动您的浏览器,该浏览器将读取脚本并将任何语法错误输出到浏览器控制台,显示它们发生的行号。

于 2012-10-20T18:25:51.840 回答
0

您可以使用 e.stack 打印堆栈跟踪

....
catch(e) {
      alert(e.lineNumber);
      console.log(e.stack)
      return eval(txt);
    }
于 2012-10-20T17:58:46.513 回答
0

基本上有两种情况: - 如果是语法错误,则错误将报告为触发它的“eval”调用的位置(不是“源”文件中的位置), - 如果它是语义错误(它已解析但在运行时失败),然后查看http://eriwen.com/javascript/js-stack-trace/以获得有关跨浏览器堆栈转储的一些想法。

要调试第一种情况,您可能必须捕获文件内容并尝试自行解析它(可能使用节点或 jsl)。

我不太清楚您要做什么,但我不得不说代码示例引发了一些问题(为什么 eval 不是 JSON.parse,为什么读取文件然后 eval 而不是包含它并调用函数,有什么用第二次评估)。

于 2012-10-20T18:05:42.873 回答