2013-05-02 7 views
5

mit folgenden Einstellung der jsHint nicht über console.log Aussagen beschwert, während es noch debugger Aussagen berichtet:Grunzen-contrib-jshint beschwert sich nicht über console.log

jshint: { 
     files: [ 
     'Gruntfile.js', 
     'js/**/*.js', 
     'tests/*.js', 
     ], 
     options: { 
     curly: true, 
     immed: true, 
     noarg: true, 
     expr: true, 
     quotmark: 'single', 
     maxdepth: 3, 
     browser: true, 
     eqnull: true 
     } 
    }, 

Antwort

8

Soweit ich das beurteilen kann, JSHint hat nie über Referenzen auf console gewarnt. Es gibt keinen Code, der speziell für solche Referenzen gedacht ist.

console wird einfach als ein Bezeichner behandelt, der definiert und zugänglich sein sollte, egal aus welchem ​​Kontext er stammt (was richtig ist, da das wirklich alles ist).

Daher können Sie JSHint dazu veranlassen, über die Verwendung von console zu warnen, indem Sie es erhalten, um über alle undefinierten Variablen zu warnen. Setzen Sie einfach die undef Option auf true.

Dann, wenn Sie die Verwendung von console zulassen möchten, können Sie es zu Ihrem globals Richtlinie hinzuzufügen, oder setzen Sie die devel Option true (die implizit es zu globals Richtlinie hinzufügt).

+0

Ok, wurde von den Optionen "devel" verwirrt. Für mich hört es sich so an, als würde jshint sich immer über 'console' beschweren und ich kann es durch' devel: true' stummschalten. –

+0

@ AndreasKöberle - Ja, die Docs scheinen mir nicht besonders klar zu sein. Ich kann ein Problem auf GitHub öffnen und sehen, ob es etwas klarer gemacht werden kann. –

+0

Für diejenigen unter Ihnen, die diese Antwort ein Jahr später lesen, ist die 'devel'-Dokumentation jetzt ziemlich explizit: http://www.jshint.com/docs/options/#environments – aymericbeaumet

2

Ich hatte dieses Problem, wo ich die Warnung für Verweise auf console wollte, und hatte undef: true und devel: false, aber immer noch nicht die Warnungen erhalten. Es stellte sich heraus, dass ich auch node: true hatte, die diese Warnung annulliert. Nach dem Wechsel zu node: false hat es funktioniert!

+0

Dies funktioniert. Gibt es eine Möglichkeit, nur auf console.log und nicht auf console.error zu warnen? – wdphd

+0

Ich glaube nicht. Wenn "console" als global festgelegt ist, enthält es sowohl .log als auch .error –

3

Ich hatte auch dieses Problem.

Ich hatte "undef" auf true eingestellt und immer noch hat es nicht funktioniert.

Ich versuchte "devel" vergebens.

Endlich - ich verwende einfach die "globals" Variable wie so:

"globals" : { 
     "console": true 
} 

und das war der Trick.

+0

Sie können einfach "" console ": false" verwenden, um einen schreibgeschützten Zugriff auf das 'console'-Objekt zuzulassen. – aymericbeaumet