AngularJS $log.debug不是一个函数。

4

我有点沮丧,因为我无法弄清楚AngularJS的$log服务出了什么问题。虽然我不经常使用它,但我已经在我的网站的另一个部分上使用它,我能想到的唯一原因是它不起作用的原因可能与then函数内部的块范围有关。
当我尝试运行$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

这是我的分析.client.controller.js文件:
'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');
                });
        };
    }

]);

提前感谢任何帮助!

3个回答

6

默认情况下,由于并不是所有浏览器都支持console.debug,因此调试方法未被启用,但您可以在应用程序的配置阶段使用$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');
      });
    };
  });

4

$logdebug方法默认情况下是被禁用的。您需要像下面这样在应用程序配置阶段启用$log

app.config(function($logProvider){
  $logProvider.debugEnabled(true);
});

默认情况下,$log 是启用的。我尝试在没有配置设置的情况下访问 .debug,它按预期工作。 - super cool

-1

顺便提一下,当我不小心重新分配调试方法而不是调用它时,我遇到了相同的错误。

$log.debug = 'My log message'

改为:

$log.debug('My log message')

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接