Ich verwende Grunt als mein Build-Tool und ESLint als mein Linting-Tool für eine App, an der ich arbeite. Ich verwende auch das Underscore Node-Paket und habe es in meiner App verwendet. Wenn ich ESLint in meinem Code ausführe, denkt es leider, dass _ eine undefinierte Variable in der folgenden Zeile ist:
return _.pluck(objects, nameColumn);
Dies ist der Fehler, den es mir gibt:
78:21 error "_" is not defined no-undef
Ich würde es vorziehen, die no-undef-Regel für ESLint nicht zu deaktivieren, und ich habe versucht, das Underscore-Plugin zu installieren, aber ich erhalte immer noch diesen Fehler. Wenn jemand noch eine Idee hat, was man damit versuchen könnte, wäre ich sehr dankbar!
Wenn es weitere Informationen gibt, die ich geben kann und die mir helfen würden, das herauszufinden, lassen Sie es mich einfach wissen!
Das amtliche Dokumentation sollte Ihnen eine Idee geben, wie Sie dies beheben können.
Jeder Verweis auf eine nicht deklarierte Variable führt zu einer Warnung, es sei denn, die Variable wird ausdrücklich in a erwähnt /*global ...*/
Kommentar, oder in der angegeben globals
Schlüssel in der Konfigurationsdatei.
Die einfachste Lösung wäre das Hinzufügen
/* global _ */
oben in Ihrer Datei.
Oder besser, geben Sie explizit an, dass die Variable schreibgeschützt ist, um das Überschreiben der Variablen zu verhindern:
/* global _:readonly */
Aber da Sie das für jede neue js-Datei tun müssen, kann es lästig werden. Wenn Sie häufig Unterstriche verwenden, würde ich vorschlagen fügen Sie Globals zu Ihrer hinzu .eslintrc
Dateizum Beispiel:
{
"globals": {
"_": "readonly"
}
}
Und speichern Sie diese als .eslintrc
in Ihrem Projektstamm oder optional in Ihrem Benutzer-Home-Verzeichnis. Obwohl einige sagen, dass letzteres nicht empfohlen wird, kann es manchmal praktisch sein, aber Sie müssen bedenken, dass Sie es dort haben 🙂
Erläuterung der obigen Regel: "_": "readonly"
(früher "_": false
jetzt veraltet) bedeutet, dass eine Variable namens _
teilt eslint mit, dass diese Variable global definiert ist und keine ausgeben wird no-undef
Fehler für diese Variable. Wie @sebastian betonte, "readonly"
(oder false
– veraltet) bedeutet, dass die Variable nicht überschrieben werden kann, so der Code _ = 'something else'
würde einen Fehler liefern no-global-assign
. Wenn Sie stattdessen verwenden würden "_": "writable"
(oder "_": true
– veraltet), bedeutet dies, dass der Wert neu zugewiesen werden kann und der zuvor erwähnte Fehler nicht auftritt.
Beachten Sie jedoch, dass dies nur geschieht, wenn Sie direkt auf die globale Variable zuweisen, wie ich es im Beispiel gezeigt habe. Sie können es immer noch beschatten und eslint wird nichts sagen. Diese Ausschnitte würden beispielsweise nicht die no-global-assign
:
const _ = 'haha I broke your _'
oder als Funktionsargumentname, zB
function (_) {
console.log(_, 'might not be the _ you were looking for')
}
Wenn Sie jest zum Testen verwenden – in Ihrer Umgebung – in eslintrc.json
"env":{
"jest":true
}