【问题标题】:How to locate bug from clients view for a syntaxerror如何从客户端视图中定位语法错误的错误
【发布时间】:2015-06-04 14:50:30
【问题描述】:

我的网页使用各种库和一些个人 javascript 代码。我已经在我的机器上对其进行了测试,并且可以正常工作。

当我将其推送到生产环境时,一位用户通知我该页面已损坏。在查看了他们的控制台日志后,我发现我的页面现在在一个看起来很好的通用函数上抛出了一个语法错误。我无法在我的机器上重现它,但它发生在他们的机器上。

我假设它是不同的操作系统问题或 x 浏览器版本问题(我使用的是 Win-8、Chrome,他们使用的是 Mac、Chrome)。我可以看到一个函数是如何中断的,它会吐出一个错误,说它无法执行未定义的函数。在尝试确定可能是什么原因时,我的下一步是什么?

语法错误是“意外的令牌(”

我可以在页面中注入一些 php 以获取有关此错误的更多信息吗?

var objBillManager = {
...
    objBillTableManager:{
...
        GetsBillsStatus(bPayed){
            if(bPayed == "1"){
                return "Payed";
            } else {
                return "Not Payed";
            }
        },
...
    },
...
}

【问题讨论】:

  • 你能包含那个通用函数吗?没有一些代码,很难找到解决方案
  • 您必须在 Jscript 中使用浏览器调试工具 F12 or debugger
  • 我无法在我的浏览器中重现它,当我让她打开她的控制台时,我看到 Uncaught subscriptions.php:2415(函数从上面开始) SyntaxError: Unexpected toke (
  • 可能解析器需要一个标识符,GetsBillsStatus(bPayed) 不是一个标识符。应该是GetsBillsStatus: function (bPayed){...}

标签: javascript syntax error-handling cross-browser


【解决方案1】:

没有看到更多,很难知道发生了什么。正如其他人提到的,firebug 是一个非常好的调试器。

我注意到一件事:您的 GetsBillsStatus 没有被定义为函数。它应该是这样的:

GetsBillsStatus: function(bPayed){
    if(bPayed == "1") {
        return "Payed";
    } else {
        return "Not Payed";
    }
}

也许这就是问题所在?

【讨论】:

  • 感谢您的建议,我会实施它,看看是否能解决问题。
猜你喜欢
  • 2023-01-26
  • 1970-01-01
  • 2012-06-18
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 2012-08-27
  • 1970-01-01
相关资源
最近更新 更多