2013-11-11 16 views
21

Hier ist meine Datei: app/scripts/controllers/main.jsjshint "use strict" -Ausgabe

"use strict"; 

angular.module('appApp') 
    .controller('MainCtrl', ['$scope', function ($scope) { 
    $scope.awesomeThings = [ 
     'HTML5 Boilerplate', 
     'AngularJS', 
     'Karma' 
    ]; 
    }]); 

Mein Gruntfile.coffee hat:

jshint: 
    options: 
     globals: 
      require: false 
      module: false 
      console: false 
      __dirname: false 
      process: false 
      exports: false 

    server: 
     options: 
      node: true 
     src: ["server/**/*.js"] 

    app: 
     options: 
      globals: 
       angular: true 
       strict: true 

     src: ["app/scripts/**/*.js"] 

Als ich grunt laufen, erhalte ich:

Linting app/scripts/controllers/main.js ...ERROR 
[L1:C1] W097: Use the function form of "use strict". 
"use strict"; 

Antwort

46

Das Problem ist, Wenn Sie das Funktionsformular nicht verwenden, gilt es für alles und nicht nur für Ihren Code. Die Lösung dazu besteht darin, den Bereich use strict in Funktionen zu steuern, die Sie steuern.

Beziehen Sie sich auf diese Frage: JSLint is suddenly reporting: Use the function form of “use strict”. Vielmehr

als tun

"use strict"; 

angular.module('appApp') 
    .controller('MainCtrl', ['$scope', function ($scope) { 
    $scope.awesomeThings = [ 
     'HTML5 Boilerplate', 
     'AngularJS', 
     'Karma' 
    ]; 
    }]); 

Sie tun sollten

angular.module('appApp') 
    .controller('MainCtrl', ['$scope', function ($scope) { 
    "use strict"; 

    $scope.awesomeThings = [ 
     'HTML5 Boilerplate', 
     'AngularJS', 
     'Karma' 
    ]; 
    }]); 

Es ist entweder das, oder Umwickeln Sie den Code in einer self-executing Schließung, wie unten.

(function(){ 
    "use strict"; 

    // your stuff 
})(); 
+1

Es ist eigentlich der richtige Weg, es zu tun, aber wie kann ich feststellen, jshint nur die Warnung ignorieren? Ich habe eine Menge .js-Dateien, die funktionieren, und ich möchte nicht jeden einzelnen von ihnen bearbeiten. – svarog

+5

Sie sollten, weil Sie externe Bibliotheken brechen könnten, wenn Sie dies nicht tun. – bevacqua

+1

'es gilt für alles, und nicht nur für Ihren Code' - nur wenn Sie Ihr Skript mit anderen verketten. Ansonsten gilt es nur für Ihren Code. –

8

Changed mein Gruntfile.coffeeglobalstrict enthalten

jshint: 
    options: 
     globalstrict: true 
     globals: 
      require: false 
      module: false 
      console: false 
      __dirname: false 
      process: false 
      exports: false 
+4

"Diese Option unterdrückt Warnungen über die Verwendung des globalen strikten Modus." Klingt eher nach einem Pflaster als nach einer Lösung. –

+0

Es ist eine Anzahl von Jahren gewesen. Ich kann Projekte sehen, die "streng werden oder aus ihren Abhängigkeiten herauskommen". –

Verwandte Themen