Avvertimento di decoratori sperimentali nella compilazione di TypeScript


251

Ricevo l'avviso ...

Il supporto sperimentale per i decoratori è una funzionalità soggetta a modifiche in una versione futura. Impostare l'opzione 'sperimentaleDecoratori' per rimuovere questo avviso.

... anche se il mio compilerOptions in tsconfig.json ha le seguenti impostazioni:

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

Ciò che è strano è che alcune classi casuali che usano decoratori non mostrano quell'avvertimento, ma il resto nello stesso progetto lo fa.

Cosa potrebbe causare tale comportamento nel compilatore TypeScript?


19
Hai provato a riavviare VS Code? Ho scoperto che è necessario dopo aver apportato modifiche a tsconfig.json a volte.
David Sherret,

2
Puoi provare a dare una risposta, amico. Funziona per me! stackoverflow.com/a/38970591/2468781
eildiz

10
Per caso se qualcun altro si imbatte in questo che utilizza VS Professional, non VS Code, potresti aver aggiunto .tsmanualmente un file a un progetto angolare; in tal caso, la compilation TS predefinita è in conflitto con la CLI angolare. Fare clic con il tasto destro del mouse sul file -> Proprietà -> Crea azione: nessuna. Quindi riavviare VS se necessario.
pbarranis,

2
Il riavvio di VS Code mi ha aiutato a risolvere il problema.
CMA,

4
Mi è capitato di avviare VSCode ( code .) nella directory sbagliata. Sembrava tutto a posto - ho visto e ho potuto modificare tutti i miei file - quindi all'inizio non ho notato nulla di "sbagliato". Ma ho ricevuto quello stupido avvertimento "Decoratori sperimentali" su uno - e solo uno! - Componente angolare. Sono uscito da VSCode, riavviato (di code .nuovo) nella directory CORRECT (la mia radice del progetto angolare) .. e l'avviso è scomparso.
paulsm4,

Risposte:


220

Sebbene VS Code sia un ottimo editor per progetti TypeScript, ha bisogno di un calcio ogni tanto. Spesso, senza preavviso, alcuni file lo fanno impazzire e lamentarsi. Principalmente la correzione sembra essere quella di salvare e chiudere tutti i file aperti, quindi aprire tsconfig.json. Dopodiché dovresti essere in grado di riaprire il file offensivo senza errori. Se non funziona, schiumare, risciacquare e ripetere.

Se si tsconfig.jsonspecificano i file di origine utilizzando l' filesarray, IntelliSense funzionerà correttamente solo se si fa riferimento al file in questione in modo tale che VS Code possa trovarlo attraversando l'albero dei file di input.

Modifica: il comando 'ricarica finestra' (aggiunto anni fa ora) dovrebbe risolvere questo problema una volta per tutte.


5
Grazie - rimozione dei "file" dal problema di risoluzione
tsconfig.json

4
La risposta non era davvero rilevante per il mio caso, ma in qualche modo mi ha aiutato a capire il mio problema. Sto usando VS 2015 e tra la modifica del file xproje tsconfig, ho perso il fatto che la cartella con i miei file di script era elencata nella excludesezione di tsconfig. Spero che questo aiuti qualcuno.
Stefan Balan,

19
File> Chiudi cartella> Apri cartella ha funzionato per me. Questo è successo dopo aver riavviato la macchina senza chiudere correttamente vscode.
Adrian Moisa,

3
Cosa succede se non sto usando il dattiloscritto? Solo javascript es6?
DDD,

3
Non sono sicuro quando è stato aggiunto, ma la palette dei comandi ora ha "Reload Window", che è l'ideale per questo genere di cose.
Coderer

185

Devo aggiungere quanto segue nel file settings.json di vscode per rimuovere l'avviso.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Preferenze -> Impostazioni

inserisci qui la descrizione dell'immagine


Molte grazie. Sto usando es6 + decoratori e non ho installato dattiloscritto. Eccezionale.
Akhmedzianov Danilian,

3
Questa risposta è la migliore, perché non è necessario creare un file separato nel progetto per risolvere un problema VSCode.
Rodrigo,

ctrl + ,tasto di scelta rapida per aprire le impostazioni degli utenti. su UserSettings cliccare 3 punti ( ...) poi sul pop-up click Open settings.jsonper apriresettings.json
suhailvs

Molte grazie. Molto utile.
an0nh4x0r

102

Questo errore si verifica anche quando si sceglie la cartella "src" per la cartella dell'area di lavoro.

Quando viene scelta la cartella principale, la cartella in cui si trovano "src", "node_modules", l'errore scompare


9
Sono venuto qui per pubblicare questo. Questo mi ha risolto. Stavo usando Angular 2 tramite Angular CLI.
asincrono il

Nel caso in cui quanto sopra non fosse comprensibile: Vscode deve caricare la cartella in cui il file di configurazione deve conoscerlo. Se vuoi caricare una piega più in basso, suppongo che potresti scrivere un nuovo file di configurazione che sarebbe valido da quella cartella e sotto.
LosManos

Questo è stato. Grazie :)
Kamil

47

File -> Preferenze -> Impostazioni


Per me, il problema è apparso sulla versione 1.37 e la tua soluzione l'ha risolto.
Stephane

32

all'interno del progetto creare il file tsconfig.json, quindi aggiungere queste righe

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "allowJs": true
    }
}

25

devo aggiungere typescript.tsdkal mio .vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"

5
Questo ha risolto il problema per me, ma quella linea va in .vscode/settings.jsonsecondo questo
Fran Rodriguez

1
L'ho risolto anche per me, ma non avevo la .vscodecartella (non so perché - sono un sviluppatore di backend, lasciami in pace!), Quindi ne ho creato uno nella cartella principale con detto settings.jsonfile.
Aage,

17

In VSCode, vai su File => Preferenze => Impostazioni (o Control + virgola) e si aprirà il file delle Impostazioni utente. Cerca "javascript.implicitProjectConfig.experimentalDecorators": true e quindi selezionare la casella di controllo sperimentaleDecorator nel file e dovrebbe risolverlo. Lo ha fatto per me.

inserisci qui la descrizione dell'immagine


13

In Visual Code Studio Vai a File >> Preferenze >> Impostazioni, Cerca "decoratore" nel campo di ricerca e Controlla l'opzione come nell'immagine. inserisci qui la descrizione dell'immagine


11

Apri il settings.jsonfile nel seguente percorso<project_folder>/.vscode/settings.json

oppure puoi aprire il file dal menu come indicato di seguito

VSCode -> File -> Preferences -> Workspace Settings

sperimentali Impostazioni dei decoratori

Quindi aggiungere le seguenti righe nel settings.jsonfile

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

È tutto. Non verrà visualizzato alcun avviso / errore relativo a " sperimentaleDecoratori "


11
Ho ottenuto "Impostazioni di configurazione sconosciute" dopo aver aggiunto "enable_typescript_language_service" utilizzando vscode 1.8.1
David Cheung

5
Questo è un consiglio ORRIBILE se il tuo progetto usa Typescript!
paulsm4,

1
La disabilitazione di "enable_typescript_language_service" disattiverebbe in modo efficace qualsiasi offerta di TypeScript per il linting dal vivo, per favore evita questo suggerimento.
Jessy,

10

Questa risposta è pensata per le persone che stanno usando un progetto Javascript e non un Typescript . Invece di un file tsconfig.json è possibile utilizzare un file jsconfig.json .

Nel caso particolare in cui i decoratori avvertono di voler scrivere all'interno del file:

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

Per quanto richiesto dai comportamenti buggy, è sempre meglio specificare "include" nel file di configurazione e riavviare l'editor. Per esempio

{
    "compilerOptions": {
        "target": "ES6",
        "experimentalDecorators": true
    },
    "include": [
        "app/**/*"
    ],
    "exclude": [
        "node_modules"
    ]
}


9

Aggiungi le seguenti righe in tsconfig.json e riavvia VS Code.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}

Il riavvio è stato la chiave per me. Grazie.
rima il

9

Non per confermare il punto, ma assicurati di aggiungere quanto segue

  • Impostazioni dell'area di lavoro non Impostazioni utente

in File >> Preferenze >> Impostazioni

"javascript.implicitProjectConfig.experimentalDecorators": true

questo risolto il problema per me, e ho provato alcuni suggerimenti che ho trovato qui e in altri luoghi.



4

Per motivi di chiarezza e stupidità.

1) Apri .vscode / settings.json.

2) Aggiungi "typescript.tsdk": "node_modules / typescript / lib" su di esso.

3) Salvalo.

4) Riavvia il codice di Visual Studio.


4

Se lavori in Visual Studio. Puoi provare questa correzione

  1. Scarica il tuo progetto da Visual Studio
  2. Vai alla home directory del tuo progetto e apri il file "csproj".
  3. Aggiungi TypeScriptExperimentalDecorators a questa sezione come mostrato nell'immagine

    inserisci qui la descrizione dell'immagine

    1. Ricarica il progetto in Visual Studio.

vedere maggiori dettagli in questa posizione.


4

Se stai usando cli per compilare file * .ts, puoi impostare sperimentaliDecoratori usando il seguente comando:

 tsc filename.ts --experimentalDecorators "true"

Grazie, questo ha salvato la mia frustation. Avevo le stesse impostazioni dell'interrogatore, tuttavia stavo usando Sublime Text 3 e la tua soluzione si è dimostrata utile!
Irfandy Jip,

4

Per favore controlla di aver opposto nel tuo codice VS la cartella dell'intero progetto e non solo la cartella src, perché se apri solo lo src, il file ts.config.json (che si trova nella cartella del progetto) non sarà nell'ambito, e VS non riconoscerà i parametri sperimentali dei decoratori.

Nel mio caso, ciò ha risolto tutti i problemi relativi a questo problema.


Questo è stato anche il mio problema. Riesci a vedere node_modules? Riesci a vedere tsconfig.json? In caso contrario, apri una nuova finestra vsCode, chiudi la vecchia finestra, scegli file -> apri cartella e assicurati di selezionare la cartella principale di srce node_modules, anziché selezionare solo src.
Kyle Vassella,

3
  1. Apri VScode.
  2. Premi ctrl + virgola
  3. Seguire le indicazioni nella schermata
    1. Cerca sperimentaleDecorators
    2. Modificalo

2

Apri l'intera cartella del progetto invece di project-name / src

tsconfig.json è fuori dalla cartella src


1

Ho corretto l'avviso rimuovendo "baseUrl": "", dal file tsconfig.json


1

È possibile riscontrare questo problema se si apre un file TS esistente al di fuori del progetto. Ad esempio, sto usando lerna e ho aperto un file da un altro pacchetto. Sebbene quell'altro pacchetto avesse il proprio tsconfig con decoratori sperimentali, VsCode non lo onora.


1

Ho riscontrato lo stesso problema durante la creazione di Injectable Services in Angular 2. Ho tutto a posto in tsconfig.json. Ancora ho riscontrato questo errore nella linea ColorsImmutable.

@Injectable()
export class ColorsImmutable {

E la correzione consisteva nel registrare il servizio a livello di modulo o a livello di componente usando l'array provider.

providers:[ColorsImmutable ],

1

Se si utilizza il runtime Deno JavaScript e TypeScript e si abilitano sperimentaleDecorators: true in tsconfig.json o nelle impostazioni ide VSCode. Non funzionerà. Secondo il requisito Deno, è necessario fornire tsconfig come flag quando si esegue un file Deno. Vedi Opzioni del compilatore TypeScript personalizzato

Nel mio caso particolare stavo eseguendo un test Deno e usato.

$ deno test -c tsconfig.json

Se è un file, hai qualcosa del genere

 $ deno run -c tsconfig.json mod.ts

il mio tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}

Lo sto già facendo, eppure non ho fortuna, come affermano nei documenti che le funzionalità sperimentali non funzioneranno,
Ezzabuzaid

Funzionerà. Vedi la risposta aggiornata esattamente del contenuto del mio tsconfig.json. Quindi vedere questo link github.com/manyuanrong/dso/issues/18
tksilicon

0

Ho aggiunto questa opzione a tsconfig.json, "baseUrl": "front-end"Sostituisci front-end con il nome del tuo progetto angular-cli.


0

Puoi anche provare con ng build. Ho appena ricostruito l'app e ora non è conforme.


0

Quindi si scopre che puoi aggirare questo abbinando il nome del tuo modulo al nome del file. Se hai il nome del modulo BankSpecialtyModule, il nome del file dovrebbe essere. banca-specialty.module.ts


0

Ho riscontrato questo errore quando ho creato un nuovo modulo e spostato il mio file * .module.ts e * -routing.module.ts in un'altra cartella. Dopo aver eliminato i due file e creato il modulo nella nuova cartella, funziona perfettamente. Environment Angular Version 9 e Angular CLI versione 9.1.0


0

Per me, questo errore "Il supporto sperimentale per i decoratori è una funzionalità soggetta a modifiche in una versione futura. (Ecc.)" Si è verificato solo in VS Code in un progetto angolare e solo durante la creazione di un nuovo servizio.

La soluzione sopra: "In Visual Code Studio Vai a File >> Preferenze >> Impostazioni, Cerca" decoratore "nel campo di ricerca e Verifica dell'opzione JavaScript› Configura implicita del progetto: Decoratori sperimentali "ha risolto il problema.

Inoltre, arrestando il servizio ng nella finestra del terminale e riavviandolo, l'errore scompare dopo la ricompilazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.