2012-07-10 8 views
9

Node.jsのExpress.js ontopを使用してRESTful APIを作成し、gruntを使用してファイルを監視し、JavaScriptを自動的にリントします。Express.js/'delete'(予約語)でJSHintを使用

私は削除機能を使用するたび、それはJSHintによってフラグが付けられます:

[L218:C9] Expected an identifier and instead saw 'delete' (a reserved word). 
app.delete('/api/users/:userid', function deleteUser(req, res, next) { 

私は、「削除」は予約語であることを理解し、それはExpress.jsによって選ばれています!私のExpress.jsアプリをlintingする良い方法はありますか?どのようにこのチェックをオフにするには?

+0

クイック検索を行うには、私はあなたが 'es5'オプションを使うことができると信じています。 – Alfred

答えて

28

Express.jsでは、deleteの代わりにdelを使用してください。

app.del('/api/users/:userid', function deleteUser(req, res, next) 
+0

凄い!ありがとう! :-D –

+5

奇妙なことに、これはAPIドキュメントにはありません... – prauchfuss

+1

もうdelを使用しないでください! 廃止予定のapp.del:代わりにapp.deleteを使用 –

3

JSHintの1.1.xのでは、jshintためes5オプションを設定することができ、そしてそれはあなたがES5仕様ごとにプロパティとして予約語を使用できるようになります。

JSHint 2.0 es5からオプションがデフォルトであり、予約語をプロパティとして使用することを許可する必要があります。

詳細情報については、あなたがhttp://www.jshint.com/docs/#options

+2

これが変更されました。 [バージョン2.0.0現在](http://www.jshint.com/blog/2013-05-07/2-0-0/)、JSHintは 'es5'オプションを取り除き、コードはES5と仮定します新しい 'es3'と' esnext'オプションを介して別の方法で言わない限り。 –

6

にこれを解決するための別の方法を超える向かうことができるがbracket notation代わりのdot notation使用することであっただろう。 IndexedDBで作業するとき

app['delete']('/api/users/:userid', function deleteUser(req, res, next) { 
    /* function body */ 
}); 

周りのこの種の仕事は、両方の.delete.continueメソッドを定義している、過去に必要でした。

最近、このような回避策は必要ありません。 Ever since ES5 JavaScriptでは、プロパティ名に予約語を使用できます。長い間、jsHintはあなたのコードがES3であると仮定してデフォルト設定しましたが、starting with version 2.0.0はデフォルトでES5と仮定されており、予約語がプロパティ名として使用されているとは言いません。

関連する問題