2014-08-31 11 views
6

Betrachten Sie die folgende Standard Express-Funktion:Stille JSHint, wenn eine bestimmte

if (app.get('env') === 'development') { 
    app.use(function (err, req, res, next) { 
     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: err 
     }); 
    }); 
} 

Die folgende Warnung wird angezeigt:

'next' definiert ist, aber nie benutzt. - W098

Ich weiß, ich alle Warnungen deaktivieren können, aber das ist nicht das, was ich will. Was ich brauche, ist, JSHint nur für einen bestimmten Parameter ('weiter' im obigen Ausschnitt) zum Schweigen zu bringen.

Ich habe keine klaren Antworten auf dieses scheinbar häufige Problem gesehen. Irgendwelche Ideen?

Danke!

+0

mögliches Duplikat von [JSHint-Warnung verhindern, dass 'functionName definiert, aber nie benutzt'] (http://stackoverflow.com/questions/12607289/prevent-jshint-warning-that-functionname-is-defined- but-never -use) –

+1

Ich fürchte, dass das, was Sie fragen, nicht möglich ist. Im Wesentlichen können Sie "unused: vars" in Ihrer '.jshintrc' oder in Ihrer Datei hinzufügen, aber ich denke nicht, dass Sie sie nur für einen bestimmten Parameter deaktivieren können. –

+0

"* [...] dieses scheinbar häufige Problem. *" Dies ist eigentlich ziemlich ungewöhnlich mit Express erfordert 4 benannte Parameter, um Fehlerhandler zu erkennen. In den meisten Fällen ist die "Länge" einer Funktion nicht signifikant und das Entfernen des zusätzlichen Parameters zur Erfüllung der Warnung würde sich nicht auf die Funktionsweise der Anwendung auswirken. –

Antwort

1

Ja, das ist möglich!

Wenn Sie die Standardinstallation von JSHint verwenden, ist die akzeptierte Antwort auf diesen Thread zu Ihrer Antwort: Is there a way to suppress JSHint warning for one given line? Es zeigt, wie Anmerkungen zu verwenden, bedingt von bestimmten Fehler/Warnungen zu ignorieren, in JSHint geworfen.

Wenn Sie ein Build-Tool wie Gulp oder Grunt verwenden, können Sie dies zu Ihren Optionen in der Aufgabenkonfiguration des Plugins hinzufügen. Zum Beispiel mit Grunt: Siehe Abschnitt "Ignorieren bestimmter Warnungen" unter https://github.com/gruntjs/grunt-contrib-jshint/blob/master/README.md.

Hoffe, das hilft!

+0

Obwohl nicht genau das, was ich suchte, Hinzufügen von "// jshint ignore: line" nach der beanstandeten Zeile zum Schweigen bringt die Warnung. Es kann andere Warnungen verschlucken, aber in meinem Fall nicht, also funktioniert es gut. – titusmagnus

3

In diesem Fall können Sie wie etwas tun unten

if (app.get('env') === 'development') { 
    app.use(function (err, req, res, next) { 
     /*jshint unused: vars*/ 
     var foo; 

     res.status(err.status || 500); 
     res.render('error', { 
      message: err.message, 
      error: err 
     }); 
    }); 
} 

Jetzt wird jshint nicht next weinen, obwohl es immer noch foo definiert warnen etwa wird aber nicht verwendet.

Wichtig, diese Unterdrückung wird an den Umfang der Funktion gebunden.

Verwandte Themen