2013-11-11 10 views
21

यहाँ मेरी फ़ाइल है: app/scripts/controllers/main.jsJSHint मुद्दा "सख्त का उपयोग करें"

"use strict"; 

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

मेरे Gruntfile.coffee है:

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"] 

जब मैं grunt चलाने के लिए, मैं:

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

उत्तर

46

मुद्दा है कि यदि आप फ़ंक्शन फॉर्म का उपयोग नहीं करते हैं तो यह सब कुछ पर लागू होता है, न कि केवल आपका कोड। इसका समाधान उन कार्यों के अंदर use strict को गुंजाइश करना है।

इस प्रश्न का संदर्भ लें: JSLint is suddenly reporting: Use the function form of “use strict”

बजाय

"use strict"; 

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

कर आप

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

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

करना चाहिए यह या तो है कि या एक स्वयं को क्रियान्वित बंद में अपने कोड लपेटकर, नीचे की तरह।

(function(){ 
    "use strict"; 

    // your stuff 
})(); 
+1

यह वास्तव में यह करने के लिए सही तरीका है शामिल करने के लिए है, लेकिन मैं कैसे JSHint बता सिर्फ चेतावनी को अनदेखा करने के लिए करते हैं? मेरे पास .js फ़ाइलों का एक गुच्छा है जो काम करते हैं और मैं उनमें से प्रत्येक को संपादित नहीं करना चाहता हूं। – svarog

+5

आपको करना चाहिए, क्योंकि यदि आप नहीं करते हैं तो आप बाहरी पुस्तकालयों को तोड़ सकते हैं। – bevacqua

+1

'यह सबकुछ पर लागू होता है, न केवल आपके कोड' - केवल तभी जब आप दूसरों के साथ अपनी स्क्रिप्ट को जोड़ रहे हों। अन्यथा यह केवल आपके कोड पर लागू होता है। –

8

बदली गई मेरी Gruntfile.coffeeglobalstrict

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

"यह विकल्प वैश्विक सख्त मोड के उपयोग के बारे में चेतावनियों को दबाता है।" एक समाधान के बजाय बैंड-सहायता की तरह लगता है। –

+0

यह कई सालों से रहा है। मैं अपनी निर्भरताओं के "सख्त या बाहर निकलने" की आवश्यकता वाली परियोजनाओं को देख सकता हूं। –

संबंधित मुद्दे