web-dev-qa-db-ja.com

JSHintはasync / awaitをサポートしていますか?

JavaScriptプロジェクト(およびVisual Studio Code)にJSHintを使用しています。そして、このプロジェクトではasync/awaitを使用しますが、これはJSHintがエラーとして強調しています。

Jshintをセットアップしようとしましたが、「esversion」の格言バージョンは6のようです。

Jshintはまだasync/awaitをサポートしていますか?もしそうなら、それをオンにする方法は?そうでない場合、回避策はありますか?

42

更新(2019年2月):バージョン2.10.1からAsync/awaitがサポートされるようになりました。 "esversion": 9を使用するように.jshintrcを更新するだけです。 (+情報: バージョン変更ログ


更新(2018年7月):Async/awaitは、JsHint 2.10.0のリリースとともに届きます。 +情報: https://github.com/jshint/jshint/pull/327


JSHINT開発コミュニティは、次のことを考慮しています。

  • JSHINTは、ES7機能の実装を開始する前に、最初にすべてのES6構文をサポートする必要があります。
  • 非同期関数はステージ1のみにあるため、構文は大きく変わる可能性があります

JSHINT-ESNEXT(パッケージ)

ただし、JSHINT-ESNEXTと呼ばれるawait/asyncの実験的サポートを含む非公式のJSHINTパッケージがあります。

著者の@ marcominetti は、公式のJSHint 2.7 Masterブランチを使用し、 Seb Vincent esnextnext ブランチから取得したこのES7機能を導入しました。

Npm Package 、および githubのソース を確認してください

インストール:$ npm install -g jshint-esnext

現在(2017年7月)これは、JSHINTでawait/asyncをサポートする唯一の適切なアプローチです。


JSHINT IGNORE(ディレクティブ)

推奨される一般的な回避策または軽減策は、JSHINT無視ディレクティブを使用することです。

// Code here will be linted with JSHint.
/* jshint ignore:start */
// Code here will be ignored by JSHint.
/* jshint ignore:end */

または:

ignoreThis(); // jshint ignore:line

私の個人的には、コードに大量の非同期/待機参照が含まれている場合、この軽減策は汚くて混乱を招くことに気付きます。しかし、もっと混乱して汚いのは、JSHINTの警告とエラーです;)

44
colxi

Jshintはまだasync/awaitをサポートしていますか?

いいえ、まだ2017年初頭ではありません。

async/awaitをまだサポートしていないようです。 jsHintに取り組んでいる人々は、標準が後期段階になるまで(まだ変化しているときに早すぎることをサポートすることで以前は焼けていたように)async/awaitをサポートしないことに決めました-実装は既に存在します(Babel、nodejsなど) ..)。

この jsHint未解決スレッド に従うと、それは7日前と11日前の最近のコメントの時点で未解決の問題です。

そうでない場合、回避策はありますか?

2017年7月の時点で、ここでasync/awaitをサポートするjshint-esnextと呼ばれるjsHintコードの分岐があるようです: https://www.npmjs.com/package/jshint-esnext

13
jfriend00

注:フォークされたJSHINT-ESNEXTパッケージ( NPM 、および github )を使用するには、「承認された回答」で提案されているように、「実験的」オプションを含める必要がありますセットする。

/* experimental: [asyncawait] */

または

/* experimental: [asyncawait, asyncreqawait] */

詳細については、ソースコード here を参照してください。

3
JoelABair

OPは、回避策があるかと尋ねました。それはちょっとしたことですが、すべての「async」または「await」を「async/** /」および「await/** /」に置き換えました。次に、それらを「/ * async * /」と「/ * await * /」にスワップする簡単なスクリプトを使用して、jshintで確認できます。

それはきれいではありませんが、ブルドッグを養います。

1
JohnN