Frage VarName ist nicht definiert, bitte korrigieren oder fügen Sie / * global VarName * / Cloud9 hinzu


Zielsetzung

Stoppen Sie Cloud9 IDE, mir die Warnmeldung zu geben.

Hintergrund

Ich kodiere JavaScript mit der Cloud9 IDE, und wo auch immer ich eine Klasse aus einer anderen Datei (im selben Ordner) verwende, bekomme ich folgende Warnmeldung:

VarName ist nicht definiert, bitte korrigieren oder hinzufügen / * global VarName * /

Das nervt mich jetzt und ich möchte es beheben.

Die naheliegende Lösung wäre, nur den Kommentar hinzuzufügen /*global VarName*/ und damit fertig sein, aber ich glaube nicht, dass dies eine gute Praxis ist.

Was ich versucht habe

Nach Recherchen stieß ich auf das JavaScript import Funktionalität. In der Theorie würde dies mir erlauben, etwas wie zu tun import "myOtherJsFile" und damit fertig sein.

Dies wäre eine gute standardisierte Lösung für das Problem, da viele andere Sprachen den gleichen Ansatz verfolgen.

Problem

Aber auch nachdem ich die Zeile hinzugefügt habe, bekomme ich immer noch die Warnung. Es wird nicht weggehen.

Fragen

  1. Mache ich etwas falsch?
  2. Gibt es eine Möglichkeit, die Warnung zu entfernen, ohne Kommentare zu meinem Code hinzuzufügen?
  3. Gibt es einen anderen Weg, um mein Ziel zu erreichen?

5
2017-07-08 15:10


Ursprung


Antworten:


Nach dem Erstellen eines thread auf den offiziellen Foren Ich bin jetzt selbstsicher genug, um hier zu schreiben, was ich gelernt habe.

Zusammenfassung

Es wurden vier Möglichkeiten zur Lösung des Problems diskutiert:

  1. Deaktivieren Sie die Variablen Warnungen mit dem Projekt
  2. Erstellen eines .eslintrc Datei mit allen Globals
  3. Gebrauch von import und export
  4. Hinzufügen des Kommentars /*global varName*/ am Anfang der Datei

Lösung 1

Um die Meldung zu umgehen, kann man in den Projekteinstellungen einfach die Option "undefinierte Variablen markieren" deaktivieren.

Obwohl diese Lösung funktioniert, hört sie einfach auf, alle undefinierten Variablen zu markieren, sogar diejenigen, die sie markieren sollen. Aus diesem Grund empfehle ich diesen Ansatz nicht.

Lösung 2

Man kann auch ein erstellen .eslintrc Think-Datei mit allen Globals, wie folgt:

{
    "globals": {
        "var1": true,
        "var2": false
    }
}

Weitere Informationen zur Konfiguration: http://eslint.org/docs/user-guide/configuring

Das Problem bei diesem Ansatz besteht darin, dass Sie jedes Mal, wenn Sie eine globale Variable erstellen, löschen oder ändern, die Datei mit den globalen Variablen aktualisieren müssen.

Das kann schnell umständlich werden und ich werde nicht einmal über die Auswirkungen auf die Wartung von Großprojekten sprechen, die bald zum Albtraum werden würden.

So wie ich es sehe, eine technische Lösung, aber nicht praktisch.

Lösung 3

Die bevorzugte Lösung, da sie ausschließlich auf JavaScript basiert und den Import- und Exportfunktionen anderer Sprachen sehr ähnlich ist.

Das Problem bei diesem Ansatz besteht jedoch darin, dass zum Zeitpunkt des Verfassens der Antwort kein Browser das unterstützt export noch das import Schlüsselwörter:

In der Zukunft könnte sich das ändern, aber im Moment ist es so, dass wir diese Lösung auch nicht verwenden können.

Lösung 4

Durch den Ausschluss von Teilen, da die Lösungen eins und zwei entweder zu großen Nebenwirkungen neigen oder große Skalierungsprobleme haben, ist dies die Lösung, die ich vorläufig verwenden werde.

Es hat keine Nebenwirkungen, skaliert sehr gut aufgrund seiner Unabhängigkeit in Bezug auf andere Dateien und vor allem, sobald Lösung 3 verfügbar ist, wird es sehr einfach sein, die Kommentare einfach durch einen Aufruf an den zu ersetzen import Stichwort.

Fazit

Zurzeit ist Lösung 4 die beste Vorgehensweise. Sobald Browser jedoch Unterstützung für Lösung 3 hinzufügen, sollte diese anstelle von Lösung 4 verwendet werden.

Kredite

Ein besonderer Dank geht an Harutyun Amirjanyan für seine Hartnäckigkeit, Geduld und Führung, die mir bei der Lösung dieses Problems geholfen haben.


6
2017-07-15 11:13



Eine andere Möglichkeit, ähnlich wie in Lösung 1, besteht darin, in den Projekteinstellungen unter "Hinweise und Warnungen" den Typ "Hinweise und Warnungen" zu wählen und unter "Ignoriere Nachrichten, die zu Regex passen"

.* is not defined; please fix or add /\*global

Diese Regex wird diesen nervenden Nachrichten entsprechen, aber es ermöglicht auch der Fehler-Überprüfung, andere undefinierte Variablen abzufangen, die gerade diese bestimmte Nachricht nicht haben.

(Natürlich ist dies nur besser als andere vorgeschlagene Lösungen, wenn Cloud9 andere Warnungen für undefinierte Variablen hat, die nicht in dieser Form sind.)


0
2018-01-04 04:28