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?
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
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.
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;)
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 .
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.
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.