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:无法读取 nativescript 中未定义的属性“cartesianChart”
TypeError:无法读取reactjs中未定义的属性“长度”
Angular 2:TypeError:l_thing0 在 AppComponent@4:44 的 [thing.title 中未定义]