Warnung vor experimentellen Dekorateuren bei der TypeScript-Kompilierung

246

Ich erhalte die Warnung ...

Die experimentelle Unterstützung für Dekorateure ist eine Funktion, die sich in einer zukünftigen Version ändern kann. Setzen Sie die Option 'experimentalDecorators', um diese Warnung zu entfernen.

... obwohl meine compilerOptions in tsconfig.json die folgenden Einstellungen haben:

"emitDecoratorMetadata": true,
"experimentalDecorators": true,

Was seltsam ist, ist, dass einige zufällige Klassen, die Dekorateure verwenden, diese Warnung nicht anzeigen, der Rest im selben Projekt jedoch.

Was könnte ein solches Verhalten im TypeScript-Compiler verursachen?

bensiu
quelle
19
Haben Sie versucht, VS Code neu zu starten? Ich habe festgestellt, dass dies notwendig ist, nachdem manchmal Änderungen an tsconfig.json vorgenommen wurden.
David Sherret
2
Sie können versuchen, Antwort zu blasen. Es funktioniert für mich! stackoverflow.com/a/38970591/2468781
eildiz
10
Wenn jemand anderes darauf stößt, der VS Professional und nicht VS Code verwendet, haben Sie möglicherweise zufällig eine .tsDatei manuell zu einem Winkelprojekt hinzugefügt . In diesem Fall steht die Standard-TS-Kompilierung in Konflikt mit der Angular-CLI. Klicken Sie mit der rechten Maustaste auf die Datei -> Eigenschaften -> Build-Aktion: Keine. Starten Sie dann VS bei Bedarf neu.
Pbarranis
2
Der Neustart von VS Code hat mir geholfen, das Problem zu lösen.
CMA
4
Ich habe VSCode ( code .) im falschen Verzeichnis gestartet . Alles schien in Ordnung zu sein - ich sah und konnte alle meine Dateien bearbeiten - also bemerkte ich zuerst nicht, dass etwas "falsch" war. Aber ich habe diese dumme Warnung "Experimentelle Dekorateure" auf einen bekommen - und nur auf einen! - Winkelkomponente. Ich habe VSCode beendet, ( code .erneut) im CORRECT- Verzeichnis (meinem Angular-Projektstamm) neu gestartet und die Warnung ist verschwunden.
Pauls4

Antworten:

218

Obwohl VS Code ein großartiger Editor für TypeScript-Projekte ist, muss er von Zeit zu Zeit überprüft werden. Oft führen bestimmte Dateien ohne Vorwarnung dazu, dass sie ausflippen und sich beschweren. Meistens scheint das Update darin zu bestehen, alle geöffneten Dateien zu speichern und zu schließen und dann zu öffnen tsconfig.json. Danach sollten Sie in der Lage sein, die fehlerhafte Datei ohne Fehler erneut zu öffnen. Wenn es nicht funktioniert, schäumen, spülen und wiederholen.

Wenn Sie tsconfig.jsondie Quelldateien mithilfe des filesArrays angeben , funktioniert IntelliSense nur dann ordnungsgemäß, wenn auf die betreffende Datei verwiesen wird, sodass VS Code sie durch Durchlaufen des Eingabedateibaums finden kann.

Bearbeiten: Der Befehl 'Fenster neu laden' (vor langer Zeit hinzugefügt) sollte dieses Problem ein für alle Mal lösen.

Linguamachina
quelle
5
Vielen Dank - Entfernen von "Dateien" aus tsconfig.json Problem beheben
Bensiu
4
Die Antwort war für meinen Fall nicht wirklich relevant, half mir aber irgendwie, mein Problem herauszufinden. Ich verwende VS 2015 und habe zwischen dem Ändern der xprojund tsconfig-Datei die Tatsache übersehen, dass der Ordner mit meinen Skriptdateien im excludeAbschnitt von aufgeführt ist tsconfig. Hoffe das hilft jemandem.
Stefan Balan
18
Datei> Ordner schließen> Ordner öffnen hat bei mir funktioniert. Dies geschah, nachdem ich den Computer neu gestartet hatte, ohne vscode ordnungsgemäß zu schließen.
Adrian Moisa
3
Was ist, wenn ich kein Typoskript verwende? Nur Javascript es6?
DDD
3
Ich bin nicht sicher, wann es hinzugefügt wurde, aber die Befehlspalette hat jetzt "Fenster neu laden", was ideal für solche Dinge ist.
Coderer
183

Ich muss Folgendes in die Datei settings.json von vscode einfügen, um die Warnung zu entfernen.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Einstellungen -> Einstellungen

Geben Sie hier die Bildbeschreibung ein

Manoj Paul
quelle
Vielen Dank. Ich verwende es6 + Dekoratoren und habe kein Typoskript installiert. Genial.
Akhmedzianov Danilian
3
Diese Antwort ist die beste, da im Projekt keine separate Datei erstellt werden muss, um ein VSCode-Problem zu lösen.
Rodrigo
ctrl + ,Tastenkombination zum Öffnen von Benutzereinstellungen. Klicken Sie in den Benutzereinstellungen auf 3 Punkte ( ...) und dann im Popup- Open settings.jsonsettings.json
Fenster
Vielen Dank. Sehr hilfreich.
an0nh4x0r
102

Dieser Fehler tritt auch auf, wenn Sie den Ordner "src" für Ihren Arbeitsbereichsordner auswählen.

Wenn der Stammordner ausgewählt wird, in dem sich "src", "node_modules" befinden, verschwindet der Fehler

Semir Deljić
quelle
9
Kam hierher, um dies zu posten. Das hat es für mich behoben. Ich habe Angular 2 über Angular CLI verwendet.
Async
Falls dies nicht nachvollziehbar war: Vscode muss den Ordner laden, in dem die Konfigurationsdatei darüber informiert werden soll. Wenn Sie mögen weiterhin ein folde herunter laden Ich denke , Sie könnten eine neue Konfigurationsdatei schreiben , die aus diesem Ordner und unten gültig wären.
LosManos
Das war's. Vielen Dank :)
Kamil
43

Datei -> Einstellungen -> Einstellungen

Dmitriy Botov
quelle
Für mich erschien das Problem in Version 1.37 und Ihre Lösung löste es.
Stephane
32

Erstellen Sie in Ihrem Projekt die Datei tsconfig.json und fügen Sie diese Zeilen hinzu

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}
Muhammed Moussa
quelle
25

muss typescript.tsdkzu meinem hinzufügen .vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"
beewest
quelle
5
Dies löste das Problem für mich, aber diese Linie geht in .vscode/settings.jsonnach dieser
Fran Rodriguez
1
Auch für mich gelöst, aber ich hatte den .vscodeOrdner nicht (ich weiß nicht warum - ich bin ein Backend-Entwickler, lass mich in Ruhe!), Also habe ich einen im Stammordner mit dieser settings.jsonDatei erstellt.
Aage
15

Gehen Sie in VSCode zu Datei => Einstellungen => Einstellungen (oder Strg + Komma) und die Datei mit den Benutzereinstellungen wird geöffnet. Suchen Sie nach "javascript.implicitProjectConfig.experimentalDecorators": true und aktivieren Sie das Kontrollkästchen für experimentelleDecorators für die Datei. Es sollte das Problem beheben. Es hat für mich getan.

Geben Sie hier die Bildbeschreibung ein

Taqi Raza Khan
quelle
12

Gehen Sie in Visual Code Studio zu Datei >> Einstellungen >> Einstellungen, suchen Sie im Suchfeld nach "Dekorator" und aktivieren Sie die Option wie im Bild. Geben Sie hier die Bildbeschreibung ein

Muzaffar Mahmood
quelle
11

Öffnen Sie die settings.jsonDatei am folgenden Speicherort<project_folder>/.vscode/settings.json

oder Sie können die Datei wie unten beschrieben über das Menü öffnen

VSCode -> File -> Preferences -> Workspace Settings

experimentelleDecorators-Einstellungen

Fügen Sie dann die folgenden Zeilen in die settings.jsonDatei ein

{
    "typescript.tsdk": "node_modules/typescript/lib",
    "enable_typescript_language_service": false
}

Das ist alles. Sie sehen keine Warnung / Fehler in Bezug auf ' experimentelleDecorators '

Vinothkumar Arputharaj
quelle
11
Ich habe "Unbekannte Konfigurationseinstellung" erhalten, nachdem ich "enable_typescript_language_service" mit vscode 1.8.1 hinzugefügt habe
David Cheung
5
Dies ist ein schrecklicher Rat, wenn Ihr Projekt Typescript verwendet!
Pauls4
1
Wenn Sie "enable_typescript_language_service" deaktivieren, werden alle LiveScript-Angebote von TypeScript effektiv deaktiviert. Vermeiden Sie diesen Vorschlag.
Jessy
10

Diese Antwort richtet sich an Personen, die ein Javascript- Projekt und kein Typescript- Projekt verwenden . Anstelle einer tsconfig.json- Datei können Sie auch eine jsconfig.json verwenden Datei verwenden.

In dem speziellen Fall, dass die Dekorateure Sie warnen, dass Sie in die Datei schreiben möchten:

{
    "compilerOptions": {
        "experimentalDecorators": true
    }
}

Für das fragliche Buggy-Verhalten ist es immer besser, das "Include" in der Konfigurationsdatei anzugeben und den Editor neu zu starten. Z.B

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}
Pere Seiten
quelle
10
"javascript.implicitProjectConfig.experimentalDecorators": true

Wird dieses Problem lösen.

Rajesh Pal
quelle
1
@ Nadya: settings.json(entweder Benutzer oder Arbeitsbereich). Sie können auch die GUI-Einstellungen verwenden, wie diese Antwort
Frank Nocke
9

Fügen Sie die folgenden Zeilen in tsconfig.json hinzu und starten Sie VS Code neu.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}
Geetesh
quelle
Der Neustart war der Schlüssel für mich. Vielen Dank.
Rynop
9

Um den Punkt nicht näher zu erläutern, sollten Sie jedoch Folgendes hinzufügen

  • Arbeitsbereichseinstellungen nicht Benutzereinstellungen

unter Datei >> Einstellungen >> Einstellungen

"javascript.implicitProjectConfig.experimentalDecorators": true

Dies hat das Problem für mich behoben und ich habe einige Vorschläge ausprobiert, die ich hier und an anderen Orten gefunden habe.

petey m
quelle
4

Aus Gründen der Klarheit und Dummheit.

1) Öffnen Sie .vscode / settings.json.

2) Fügen Sie "typescript.tsdk": "node_modules / typescript / lib" hinzu.

3) Speichern Sie es.

4) Starten Sie Visual Studio Code neu.

LEMUEL ADANE
quelle
4

Wenn Sie in Visual Studio arbeiten. Sie können dieses Update versuchen

  1. Entladen Sie Ihr Projekt aus Visual Studio
  2. Gehen Sie zu Ihrem Projekt-Ausgangsverzeichnis und öffnen Sie die Datei "csproj".
  3. Fügen Sie diesem Abschnitt TypeScriptExperimentalDecorators hinzu, wie in der Abbildung gezeigt

    Geben Sie hier die Bildbeschreibung ein

    1. Laden Sie das Projekt in Visual Studio neu.

Weitere Details finden Sie an dieser Stelle.

Kumar Chandraketu
quelle
4

Wenn Sie cli zum Kompilieren von * .ts-Dateien verwenden, können Sie experimentDecorators mit dem folgenden Befehl festlegen:

 tsc filename.ts --experimentalDecorators "true"
Koji D'infinte
quelle
Danke, das hat meine Frustration gerettet. Ich hatte die gleichen Einstellungen wie der Fragesteller, jedoch habe ich Sublime Text 3 verwendet , und Ihre Lösung hat sich als hilfreich erwiesen!
Irfandy Jip
4

Bitte überprüfen Sie, ob Sie in Ihrem VS-Code den Ordner des gesamten Projekts und nicht nur den src-Ordner gefunden haben. Wenn Sie nur den src öffnen, befindet sich die Datei ts.config.json (im Projektordner) nicht im Gültigkeitsbereich und VS erkennt die experimentellen Dekorationsparameter nicht.

In meinem Fall wurden alle Probleme im Zusammenhang mit diesem Problem behoben.

dayanrr91
quelle
Dies war auch mein Problem. Können Sie node_modules sehen? Können Sie tsconfig.json sehen? Wenn nicht, öffnen Sie ein neues vsCode-Fenster, schließen Sie das alte Fenster, wählen Sie Datei -> Ordner öffnen und stellen Sie sicher, dass Sie den übergeordneten Ordner von srcund auswählen node_modules, anstatt nur zu wählen src.
Kyle Vassella
3
  1. Öffnen Sie den VScode.
  2. Drücken Sie Strg + Komma
  3. Folgen Sie den Anweisungen im Screenshot
    1. Suche nach experimentellen Dekoren
    2. Bearbeite es
Mostafa
quelle
2

Öffnen Sie den gesamten Projektordner anstelle des Projektnamens / src

tsconfig.json befindet sich außerhalb des src-Ordners

Andrew Yavorsky
quelle
1

Ich habe die Warnung korrigiert, indem ich "baseUrl": "" aus der Datei tsconfig.json entfernt habe

D. Greene
quelle
1

Dieses Problem kann auftreten, wenn Sie eine TS-Datei öffnen, die außerhalb des Projekts vorhanden ist. Zum Beispiel benutze ich lerna und hatte eine Datei aus einem anderen Paket geöffnet. Obwohl dieses andere Paket eine eigene tsconfig mit experimentellen Dekorateuren hatte, wird es von VsCode nicht berücksichtigt.

Ersatzbytes
quelle
1

Beim Erstellen eines Injectable Services in Angular 2 trat das gleiche Problem auf . Ich habe alle Dinge in tsconfig.json installiert. Trotzdem wurde dieser Fehler in der Zeile ColorsImmutable angezeigt.

@Injectable()
export class ColorsImmutable {

Die Lösung bestand darin, den Dienst auf Modulebene oder Komponentenebene mithilfe des Provider-Arrays zu registrieren.

providers:[ColorsImmutable ],
Mohammad Javed
quelle
1

Wenn Sie die Laufzeit von Deno JavaScript und TypeScript verwenden und experimentelle Dekoratoren aktivieren: true in tsconfig.json oder den VSCode ide-Einstellungen. Es wird nicht funktionieren. Je nach Deno-Anforderung müssen Sie tsconfig als Flag angeben, wenn Sie eine Deno-Datei ausführen. Siehe Benutzerdefinierte TypeScript-Compileroptionen

In meinem speziellen Fall habe ich einen Deno-Test durchgeführt und verwendet.

$ deno test -c tsconfig.json

Wenn es sich um eine Datei handelt, haben Sie so etwas wie

 $ deno run -c tsconfig.json mod.ts

meine tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}
Tksilicium
quelle
Ich mache das schon und doch kein Glück, wie sie in den Dokumenten
angeben, werden
Es wird klappen. Siehe aktualisierte Antwort genau des Inhalts meiner tsconfig.json. Dann sehen Sie diesen Link github.com/manyuanrong/dso/issues/18
tksilicon
0

Ich habe diese Option zu tsconfig.json hinzugefügt. "baseUrl": "front-end"Ersetzen Sie das Front-End durch den Namen Ihres Angular-Cli -Projekts.

Sean Maxwell
quelle
0

Sie können es auch mit versuchen ng build. Ich habe gerade die App neu erstellt und jetzt entspricht sie nicht mehr.

Leandro hereñu
quelle
0

Es stellt sich also heraus, dass Sie dies umgehen können, indem Sie Ihren Modulnamen mit dem Dateinamen abgleichen. Wenn Sie den Modulnamen BankSpecialtyModule haben, sollte der Dateiname lauten. bank-speciality.module.ts

Neal Connolly
quelle
0

Dieser Fehler trat auf, als ich ein neues Modul erstellte und meine Dateien * .module.ts und * -routing.module.ts in einen anderen Ordner verschob. Nachdem ich die beiden Dateien gelöscht und das Modul im neuen Ordner erstellt habe, funktioniert es einwandfrei. Umgebung Angular Version 9 und Angular CLI Version 9.1.0

Yirga
quelle