AngularJS $log.debug is not a function

时间:2015-06-25 19:00:05

标签: javascript angularjs logging

I'm a bit frustrated because I can't figure out whats up with the AngularJS $log service. I don't use it often but I have it working on another part of my site, the only reason I could think it wouldn't be working would be something to do with the block scope inside the then function. In my console I get the following error when trying to run $log.debug: TypeError: $log.debug is not a function at analysis.client.controller.js:23 at processQueue (angular.js:14551) at angular.js:14567 at Scope.$get.Scope.$eval (angular.js:15830) at Scope.$get.Scope.$digest (angular.js:15641) at angular.js:15869 at completeOutstandingRequest (angular.js:5387) at angular.js:5659 Heres my analysis.client.controller.js file: 'use strict'; angular.module('analysis').controller('AnalysisController', ['$scope', '$timeout', '$mdSidenav', '$mdComponentRegistry', '$log', 'Authentication', function($scope, $timeout, $mdSidenav, $mdComponentRegistry, $log, Authentication) { $scope.user = Authentication.user; // Option #1 // // $scope.isOpen = function() { return $mdSidenav('right').isOpen(); }; // $scope.toggle = function() { $mdSidenav('right').toggle() }; // Option #2 - See https://github.com/angular/material/issues/974 $scope.toggle = angular.noop; $scope.isOpen = function() { return false; }; $scope.toggleLeft = function() { $mdSidenav('left').toggle() .then(function() { $log.debug('toggle left is done'); }); }; } ]); Thanks in advance for any help!

3 个答案:

答案 0 :(得分:5)

The debug method is not enabled by default because not all browsers support console.debug, but you can enable it in the configuration phase of your app with the $logProvider. 'use strict'; angular.module('analysis') .config(function($logProvider){ $logProvider.debugEnabled(true); }) .controller('AnalysisController', function( $scope, $timeout, $mdSidenav, $mdComponentRegistry, $log, Authentication ) { $scope.user = Authentication.user; // Option #1 // // $scope.isOpen = function() { return $mdSidenav('right').isOpen(); }; // $scope.toggle = function() { $mdSidenav('right').toggle() }; // Option #2 - See https://github.com/angular/material/issues/974 $scope.toggle = angular.noop; $scope.isOpen = function() { return false; }; $scope.toggleLeft = function() { $mdSidenav('left').toggle().then(function() { $log.debug('toggle left is done'); }); }; });

答案 1 :(得分:4)

$log's debug method is disabled by default. You need to enable $log from app config phase like below. app.config(function($logProvider){ $logProvider.debugEnabled(true); });

答案 2 :(得分:-1)

仅供参考,当我无意中重新分配调试方法而不是调用它时,我遇到了同样的错误。

$log.debug = 'My log message'

而不是:

$log.debug('My log message')

浏览到包含错误语句的页面后,我会在其他包含日志语句的页面上获得"TypeError: $log.debug is not a function"

相关问题