webentwicklung-frage-antwort-db.com.de

Unterstützt JSHint Async/Warten?

Ich verwende JSHint für das JavaScript-Projekt (mit dem Visual Studio-Code). Und in diesem Projekt verwende ich async/await, was JSHint als Fehler herausstellt.

Ich habe versucht, Jshint einzurichten, aber die maximale Version von "Esversion" ist 6.

Unterstützt jshint noch async/waitit? Wenn ja, wie kann ich es einschalten? Und wenn nicht, gibt es Abhilfemaßnahmen? 

35

Update (Februar 2019): Async/await werden ab Version 2.10.1 unterstützt. Aktualisieren Sie einfach Ihre .jshintrc, um "esversion": 9 zu verwenden. (+ Info: Versionsänderungsprotokoll )


Update (Juli 2018): Async/await wird mit der Veröffentlichung von JsHint 2.10.0 eintreffen. + info: https://github.com/jshint/jshint/pull/3273


Die JSHINT-Entwicklergemeinschaft ist der Ansicht, dass:

  • JSHINT sollte zuerst die gesamte ES6-Syntax unterstützen, bevor mit der Implementierung von ES7-Funktionen begonnen wird.
  • Async-Funktionen befinden sich nur in Stufe 1, daher kann sich die Syntax stark ändern

JSHINT-ESNEXT (PAKET)

Es gibt jedoch ein unnoficial JSHINT-Paket, das experimentelle Unterstützung für await/async enthält und JSHINT-ESNEXT heißt.

Der Autor @ marcominetti verwendete den offiziellen JSHint 2.7 Master-Zweig und führte dieses ES7-Feature aus dem Seb Vincent esnextnext -Zweig ein.

Überprüfen Sie das Npm Package und die Quelle in github

Installation: $ npm install -g jshint-esnext

Im Moment (Juli 2017) ist dies der einzige anständige Ansatz zur Unterstützung von await/async in JSHINT.


JSHINT IGNORE (RICHTLINIE)

Eine häufig empfohlene Vorgehensweise zur Problemumgehung oder -minderung ist die Verwendung der JSHINT-Direktive zum Ignorieren.

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

Oder:

ignoreThis(); // jshint ignore:line

Ich persönlich finde diese Minderungspraxis schmutzig und verwirrend, wenn unser Code eine große Menge an asynchronen/erwarteten Referenzen hat. Aber verwirrender und schmutziger sind die JSHINT Warnungen und Fehler;) 

37
colxi

Unterstützt jshint noch async/waitit?

Nein, noch nicht Anfang 2017.

Es scheint, dass es async/await noch nicht unterstützt. Leute, die an jsHint arbeiten, haben sich entschieden, async/await nicht zu unterstützen, bis die Standards in einem späten Stadium waren (das zuvor offenbar durch zu frühes Unterstützen von Dingen zerstört wurde, als sie sich noch ändern) - obwohl bereits Implementierungen vorhanden sind (Babel, nodejs usw.).

Wenn Sie diesem jsHint open issue thread folgen, ist dies nach den letzten Kommentaren vor 7 und 11 Tagen noch ein offenes Problem.

Und wenn nicht, gibt es Abhilfemaßnahmen?

Seit Juli 2017 scheint es eine Abzweigung des jsHint-Codes mit dem Namen jshint-esnext zu geben, der hier Unterstützung für async/await bietet: https://www.npmjs.com/package/jshint-esnext .

13
jfriend00

Hinweis: Wenn Sie das verzweigte JSHINT-ESNEXT-Paket ( NPM und github ) wie in der "akzeptierten Antwort" vorgeschlagen verwenden, muss die Option "experimentell" festgelegt werden.

/* experimental: [asyncawait] */ 

oder

/* experimental: [asyncawait, asyncreqawait] */

Siehe den Quellcode hier für Details.

3
JoelABair

Das OP hat gefragt, ob es Abhilfemaßnahmen gibt. Es ist ein Klatsch, aber ich habe all 'async' oder 'waitit' durch 'async/** /' und 'waitit/** /' ersetzt. Ein schnelles Skript, in dem sie in '/ * async * /' und '/ * await * /' getauscht werden können, ermöglicht es mir, mit jshint zu überprüfen.

Es ist nicht hübsch, aber es füttert die Bulldogge.

1
JohnN