2014-08-31 70 views
6

考慮以下標準特快功能:顯示沉默JSHint當特定

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 
     }); 
    }); 
} 

以下警告:

「未來」的定義,但從未使用過。 - W098

我知道我可以禁用所有警告,但是這不是我想要的。我需要的是隻爲特定的參數沉默JSHint(上面代碼段中的'next')。

我還沒有看到任何明確的答案,這個看似普遍的問題。有任何想法嗎?

謝謝!

+0

[防止JSHint警告'functionName被定義但從未使用']的可能的重複(http://stackoverflow.com/questions/12607289/prevent-jshint-warning-that-functionname-is-defined-but-never -used) – 2014-08-31 19:22:12

+1

恐怕你所要求的是不可能的。基本上你可以在你的'.jshintrc'或你的文件中添加'unused:vars',但是我不認爲你只能爲特定的參數禁用它。 – 2014-08-31 19:26:31

+0

「* [...]這個看似普遍的問題。*」這實際上很不尋常,Express需要4個命名參數來識別錯誤處理程序。在大多數情況下,函數的「長度」並不重要,刪除附加參數以滿足警告不會影響應用程序的運行方式。 – 2014-08-31 19:42:16

回答

1

是的,這是可能的!

如果您正在使用JSHint的默認設置,在此線程接受的答案是你的答案太: Is there a way to suppress JSHint warning for one given line? 它展示瞭如何使用註釋來有條件地從JSHint拋出忽略特定的錯誤/警告。

如果您使用的是像Gulp或Grunt這樣的構建工具,可以將其添加到您的插件任務配置中的選項中。例如,使用Grunt: 請參閱https://github.com/gruntjs/grunt-contrib-jshint/blob/master/README.md上的「忽略特定警告」一節。

希望這會有所幫助!

+0

雖然不是我正在尋找的內容,但在違規行停止警告後添加「// jshint ignore:line」。它可能會吞嚥其他警告,但在我的情況下,它不會,所以它可以正常工作。 – titusmagnus 2014-08-31 22:30:48

3

在這種情況下,你可以這樣做下面

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 
     }); 
    }); 
} 

現在jshint不會哭一下next,但它仍然會警告foo被定義但未使用。

重要的是,這種抑制將被綁定到函數的作用域。