TypeError:dbg在angularjs中未定义

Posted

技术标签:

【中文标题】TypeError:dbg在angularjs中未定义【英文标题】:TypeError: dbg is undefined in angularjs 【发布时间】:2015-01-26 20:23:02 【问题描述】:

我正在学习 angularjs 并遵循来自 - here 的教程

这是我的 index.jsp -

<!doctype html>
<html lang="en" ng-app="phoneCatApp">
<head>
<title>Angular Example</title>
<script type="text/javascript" src="angular/angular.min.js"></script>
<script type="text/javascript" src="app/js/controllers.js"></script>
</head>
<body ng-controller="phoneListCtrl">
    Search : -
    <input ng-model="query"/> Sort by:
    <select ng-model="orderProp">
        <option value="name">Alphabetical</option>
        <option value="age">Newest</option>
        <option value="-age">Oldest</option>
    </select>
    <p>Total number of phones: phones.length</p>
    <ul>
        <li ng-repeat="phone in phones | filter:query | orderBy:orderProp"><span>phone.name</span>
            <p>phone.snippet</p></li>
    </ul>
</body>
</html>

这个版本的 controller.js 可以工作 -

var phonecatApp = angular.module('phoneCatApp', []);
    phonecatApp.controller('phoneListCtrlOld', function($scope) 
        $scope.phones = [ 
            'name' : 'Nexus S',
            'snippet' : 'Fast just got faster with Nexus S.',
            'age' : 1
        , 
            'name' : 'Motorola XOOM™ with Wi-Fi',
            'snippet' : 'The Next, Next Generation tablet.',
            'age' : 2
        , 
            'name' : 'MOTOROLA XOOM™',
            'snippet' : 'The Next, Next Generation tablet.',
            'age' : 3
         ];
        $scope.orderProp = 'age';
    );

但在下一步中,我尝试使用 ajax 调用获取此 json 数据,因此控制器看起来像这样 -

var phonecatApp = angular.module('phoneCatApp', []);
phonecatApp.controller('phoneListCtrl', function($scope, $http) 
    $http.get('app/js/phones.json').success(function(data) 
        $scope.phones = data;
    );
    $scope.orderProp = 'age';
);

但这给了我以下错误 -

类型错误:dbg 未定义。 debuggerLib.js(第 530 行)

我可以在 firebug 中看到 ajax 调用发生在代码 304 Not Modified 的情况下。我可以看到响应的数据。但响应内容类型不是 json。

请检查一下并说出问题所在?我是否缺少要包含的任何 js 文件或其他内容。

【问题讨论】:

您的萤火虫安装是否可能以某种方式搞砸了?我认为debuggerLib.js 是萤火虫的文件。在任何情况下,在一个名为 that 的文件中,有一行代码试图在名为 dbg 的变量上调用一些代码,该变量在代码中该点不存在。找出该文件对应的内容,您应该会找到答案。 尝试在 Chrome 中重现同样的错误。如果不重复,萤火虫就是罪魁祸首。 我刚刚在我正在处理的项目中遇到了这个问题,但是我的 javascript 代码在我的 $http.get 函数内部有一个错误,一旦纠正,就不会再抛出这个错误了。我在您的代码中没有看到任何彻底的错误,但也许可以尝试注释掉代码,直到您找到导致错误的行。 我也有这个问题。这真的很烦人,因为它使得使用 firebug 调试 Angular 变得非常困难。它发生在某些 Angular 错误中并掩盖了真正的问题。抱歉,我也没有解决办法。 @rgimmy 这对我来说也是如此。我的脚本中有一些错误,我收到了这个愚蠢的错误。一旦我纠正了问题,这个错误就消失了。 【参考方案1】:

您正在使用数字,因此请使用数字或将值解析为下面的数字示例。

<code>
   var myApp = angular.module('MyApp',[]);
    myApp.controller("myController",function($scope)
        $scope.width=50;
        $scope.height=50;
    );
</code>

【讨论】:

【参考方案2】:

@LSerni 的解释似乎是正确的。 对于 Linux 系统,只需删除并重新安装您的 Firebug 插件。系统自动删除所有相关文件/文件夹并重新创建。 这对我有用。

【讨论】:

【参考方案3】:

对我来说,问题是我忘记在控制器中定义库

app.controller("MyCtrl", function($scope, $http)   //<- here $timeout was missing 

  $http.get(someUrl)
    .then(function(myResponse) 
        $scope.myData = myResponse.data;

        $timeout(function()                //<- here $timeout was called  without being defined
            enableWatchers = true; 
        );
  );
);

在我将代码的第一行更改为:

app.controller("MyCtrl", function($scope, $http, $timeout)   //<- here I put the $timeout 

【讨论】:

我不明白消极点,你应该说一个原因,以便我可以解决它【参考方案4】:

试试这个, 首先初始化JSON数组值为空。所以初始化

    $scope.phones = '';

【讨论】:

【参考方案5】:

您可能正在使用激活了 firebug 的 FireFox。 关闭萤火虫,你的问题就会消失。

我遇到了同样的问题,其他浏览器没有问题,控制台显示来自debuggerLib.js 的错误(第 556 行)。停用它可以消除错误并让我的应用程序按预期运行。

【讨论】:

【参考方案6】:

我也遇到过同样的错误,经过一番摸索后发现一个原因。我不能确定这是否是你的同样的原因。

重新启动 Firefox、重新启动 PC、删除 Firebug、重新安装、优化、运行注册表清理等 - 没有任何帮助。我在 debuggerLib.js 第 556 行遇到错误,dbg 未定义。

然而,事实证明我以前安装了 Firebug,它在我的漫游配置文件中创建了一个目录:

C:\Users\Leonardo\AppData\Roaming\Mozilla\Firefox\Profiles\Leonardo.Serni\firebug

在那个目录中有很多 JSON 文件,但没有一个是今天的,那是我删除并重新安装 Firebug 的时候。所以我想知道,“如果 new Firebug 正在从这个目录加载一些过时的东西怎么办?”。

我关闭了 Firefox,将目录从“firebug”重命名为“bugfire”,然后重新打开了 Firefox。

Firebug 运行正常,错误已消失。我在没有重命名目录的情况下做了同样的事情,错误并没有消失,所以我相信我的假设是正确的。

目录已重新创建,但现在只有两个文件 - “annotations.json”和“breakpoints.json”,大小均为 0 字节。可能有一天我会尝试从旧目录中添加文件,以查看错误何时出现。

更新(感谢 DevNull 的评论)

可能没有必要对整个目录进行核对。验证 annotations.json 文件的长度是否为零。如果不是,只需在 Firefox 未运行时将其重命名为 annotations.old


我开始怀疑dbg 实际上是在调试 Firebug 本身,我们没有定义它,因为我们不是 Firebug 开发人员。它与调试 我们的 脚本的 Firebug 调试器无关。

【讨论】:

你拯救了我的一天(以及我的 Fx 个人资料 ^^ 我认为它是 Fx 内部的,也许是这个更新的 Fx 49……不)。查找与 2012-2015 项目相关的 150 kB 的 170 kB JSON 文件,您是否忘记了 Firebug?编辑:等等,问题来自 2014 年,但你昨天的回答?我想念一些东西 嗯,是的。一旦我的萤火虫运行成功,我首先查看的是 Stack Overflow。不幸的是,这里的答案都没有帮助我。当我发现在我的情况是一个解决方案时,我发布了它,以防其他人有相同的症状和相同的原因。很高兴看到它起作用:-)。不幸的是,这类事情有很多因素,以至于相同的症状(“它不起作用!”)可能实际上取决于 anything,您可以有 20 个答案,并且所有答案都对 某人。或者您可能需要同时测试两个或三个答案。 我认为这可能是一个错误的注释文件。你的解决方案奏效了。所以我停止了 ff 并复制到我的旧断点文件中,仍然有效。停止并复制到注释文件中,突然又回来了同样的错误。 你是对的。我的旧注释文件 not 长度为零,而我的新文件是。我无法对其内容做出正面或反面,但我可能会在某个时候调查它:-) 疯了这是昨天发生在我身上的事情,所以我按照你的建议修复了它,并发现了注释文件的事情。巴姆,今晚又遇到问题了。 /叽/。现在我只是停止 firefox,rm -f 文件(我在 linux 上),然后再次启动 firefox。希望这不会成为 Firefox 的(坏)习惯。【参考方案7】:

您遇到的错误与您的 JSON 文件有关。它应该是这样的:

       [
            "name" : "Nexus S",
            "snippet" : "Fast just got faster with Nexus S.",
            "age" : 1
        , 
            "name" : "Motorola XOOM™ with Wi-Fi",
            "snippet" : "The Next, Next Generation tablet.",
            "age" : 2
        , 
            "name" : "MOTOROLA XOOM™",
            "snippet" : "The Next, Next Generation tablet.",
            "age" : 3
        ]

记住方括号。

使用 .then 而不是 .success。这是.success 的改进版本,可以更有效地处理所有回调和调用。它带回了整个承诺,您可以通过引用 .data 部分来解决它,即 response.data

$http.get('app/js/phones.json').then(function(response) 
        $scope.phones = response.data;
    );

DEMO - Using .success

DEMO - Using .then promise

【讨论】:

【参考方案8】:

使用这段代码的 html 头标签。

  <base href="/">

....

【讨论】:

以上是关于TypeError:dbg在angularjs中未定义的主要内容,如果未能解决你的问题,请参考以下文章

TypeError: d 在 OBIEE11g 中未定义

TypeError:无法读取 nativescript 中未定义的属性“cartesianChart”

TypeError:无法读取reactjs中未定义的属性“长度”

TypeError:无法读取反应中未定义的属性“减少”

TypeError:无法读取反应js中未定义的属性'fn'

Angular 2:TypeError:l_thing0 在 AppComponent@4:44 的 [thing.title 中未定义]