eslint-plugin-angular this.variable 导致没有方法 'findIndex'

eslint-plugin-angular this.variable causing has no method 'findIndex'

我注意到如果我完成这里的步骤 https://github.com/Gillespie59/eslint-plugin-angular 和 运行 eslint 它 运行 在大多数文件上都很好但是它会导致带有 [= 的文件出现以下问题17=]里面的变量。

例如,如果我有以下文件:

function profileCtrl($scope, dataFactory) {
    $scope.buttonDisabled = false;
    $scope.loading = false;

    $scope.user = {};

    function readUser(userId) {
        $scope.buttonDisabled = true;
        $scope.loading = true;
        dataFactory.readUser(userId).then(function(res){
            $scope.user = res.data;
            $scope.buttonDisabled = false;
            $scope.loading = false;
        });
    };    
}

然后eslint会吐出:

/home/ubuntu/sample/app/components/profile/profile.js
   1:10  error  'dataFactory' is defined but never used                                                      no-unused-vars
   1:21  error  Missing space before function parentheses                                                    space-before-function-paren
   2:5   error  Expected indentation of 2 space characters but found 4                                       indent
   2:25  error  Extra semicolon                                                                              semi
   4:5   error  Expected indentation of 2 space characters but found 4                                       indent
   5:9   error  Expected indentation of 6 space characters but found 8                                       indent
   5:57  error  Extra semicolon                                                                              semi
   6:6   error  Extra semicolon                                                                              semi
   7:5   error  Expected indentation of 2 space characters but found 4                                       indent
   7:54  error  Identifier 'first_name' is not in camel case                                                 camelcase
   7:66  error  Identifier 'last_name' is not in camel case                                                  camelcase
   8:9   error  Expected indentation of 6 space characters but found 8                                       indent
   8:9   error  You should use the "log" method of the AngularJS Service $log instead of the console object  angular/log
   8:86  error  Extra semicolon                                                                              semi
   9:9   error  Expected indentation of 6 space characters but found 8                                       indent
  10:13  error  Expected indentation of 10 space characters but found 12                                     indent
  11:13  error  Expected indentation of 10 space characters but found 12                                     indent
  12:13  error  Expected indentation of 10 space characters but found 12                                     indent
  13:13  error  Expected indentation of 10 space characters but found 12                                     indent
  14:10  error  Extra semicolon                                                                              semi
  15:9   error  Expected indentation of 6 space characters but found 8                                       indent
  15:26  error  Extra semicolon                                                                              semi
  16:9   error  Expected space or tab after '/*' in comment                                                  spaced-comment
  22:6   error  Extra semicolon                                                                              semi
  23:5   error  Expected indentation of 2 space characters but found 4                                       indent
  23:23  error  Extra semicolon                                                                              semi
  26:10  error  'profileCtrl' is defined but never used                                                      no-unused-vars
  26:21  error  Missing space before function parentheses                                                    space-before-function-paren
  27:5   error  Expected indentation of 2 space characters but found 4                                       indent
  27:34  error  Extra semicolon                                                                              semi
  28:5   error  Expected indentation of 2 space characters but found 4                                       indent
  28:27  error  Extra semicolon                                                                              semi
  30:5   error  Expected indentation of 2 space characters but found 4                                       indent
  30:21  error  Extra semicolon                                                                              semi
  32:5   error  Expected indentation of 2 space characters but found 4                                       indent
  32:14  error  'readUser' is defined but never used                                                         no-unused-vars
  32:22  error  Missing space before function parentheses                                                    space-before-function-paren
  33:9   error  Expected indentation of 6 space characters but found 8                                       indent
  33:37  error  Extra semicolon                                                                              semi
  34:9   error  Expected indentation of 6 space characters but found 8                                       indent
  34:30  error  Extra semicolon                                                                              semi
  35:9   error  Expected indentation of 6 space characters but found 8                                       indent
  35:51  error  Missing space before function parentheses                                                    space-before-function-paren
  35:56  error  Missing space before opening brace                                                           space-before-blocks
  36:13  error  Expected indentation of 10 space characters but found 12                                     indent
  36:35  error  Extra semicolon                                                                              semi
  37:13  error  Expected indentation of 10 space characters but found 12                                     indent
  37:42  error  Extra semicolon                                                                              semi
  38:13  error  Expected indentation of 10 space characters but found 12                                     indent
  38:35  error  Extra semicolon                                                                              semi
  39:11  error  Extra semicolon                                                                              semi

✖ 51 problems (51 errors, 0 warnings)

注意它甚至在进行 angular 检查。但是,如果文件是这样的:

function profileCtrl($scope, dataFactory) {
    $scope.buttonDisabled = false;
    $scope.loading = false;

    $scope.user = {};

    function readUser(userId) {
        $scope.buttonDisabled = true;
        $scope.loading = true;
        dataFactory.readUser(userId).then(function(res){
            $scope.user = res.data;
            $scope.buttonDisabled = false;
            $scope.loading = false;
        });
    };


    this.updateUser = null;

}

然后,我得到以下错误:

ubuntu@ip-172-31-30-67:~/sample/app$ /home/ubuntu/node_modules/eslint/bin/eslint.js components/profile/profile.js 
Object [object Object],[object Object],[object Object],[object Object],[object Object],[object Object] has no method 'findIndex'
TypeError: Object [object Object],[object Object],[object Object],[object Object],[object Object],[object Object] has no method 'findIndex'
    at isClassDeclaration (/home/ubuntu/node_modules/eslint-plugin-angular/rules/controller-as-vm.js:65:26)
    at EventEmitter.ThisExpression (/home/ubuntu/node_modules/eslint-plugin-angular/rules/controller-as-vm.js:80:18)
    at EventEmitter.emit (events.js:117:20)
    at NodeEventGenerator.enterNode (/home/ubuntu/node_modules/eslint/lib/util/node-event-generator.js:40:22)
    at CodePathAnalyzer.enterNode (/home/ubuntu/node_modules/eslint/lib/code-path-analysis/code-path-analyzer.js:607:23)
    at CommentEventGenerator.enterNode (/home/ubuntu/node_modules/eslint/lib/util/comment-event-generator.js:97:23)
    at Controller.traverser.traverse.enter (/home/ubuntu/node_modules/eslint/lib/eslint.js:905:36)
    at Controller.__execute (/home/ubuntu/node_modules/eslint/node_modules/estraverse/estraverse.js:397:31)
    at Controller.traverse (/home/ubuntu/node_modules/eslint/node_modules/estraverse/estraverse.js:501:28)
    at Controller.Traverser.controller.traverse (/home/ubuntu/node_modules/eslint/lib/util/traverser.js:36:33)

我该如何解决这个问题。

这对我来说在 Travis 上失败了。从 this comment 我发现这可能是节点版本问题。尝试更新节点。它似乎适用于 6.3.