Aviso de decoradores experimentais na compilação TypeScript

250

Eu recebo o aviso ...

O suporte experimental para decoradores é um recurso que está sujeito a alterações em uma versão futura. Defina a opção 'experimentalDecorators' para remover este aviso.

... mesmo que minhas opções de compilação no tsconfig.json tenham as seguintes configurações:

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

O que é estranho é que algumas classes aleatórias que usam decoradores não mostram esse aviso, mas o restante no mesmo projeto.

O que poderia causar esse comportamento no compilador TypeScript?

bensiu
fonte
19
Você já tentou reiniciar o VS Code? Descobri que é necessário depois de fazer alterações no tsconfig.json algumas vezes.
David Sherret 08/07
2
Você pode tentar responder, cara. Isso funciona para mim! stackoverflow.com/a/38970591/2468781
eildiz
10
Por acaso, se alguém encontrar isso usando o VS Professional, não o VS Code, você pode ter adicionado um .tsarquivo manualmente a um projeto angular; Nesse caso, a compilação TS padrão está em conflito com a CLI angular. Clique com o botão direito do mouse no arquivo -> Propriedades -> Ação de Construção: Nenhuma. Em seguida, reinicie o VS, se necessário.
Pbarranis
2
A reinicialização do código VS me ajudou a resolver o problema.
CMA
4
Por acaso, iniciei o VSCode ( code .) no diretório errado. Tudo parecia bom - eu vi e consegui editar todos os meus arquivos - então, a princípio, não percebi que havia algo "errado". Mas recebi aquele aviso estúpido de "decoradores experimentais" em um - e apenas um! - componente angular. Saí do VSCode, reiniciei ( code .novamente) no diretório CORRETO (minha raiz do projeto Angular) .. e o aviso desapareceu.
paulsm4

Respostas:

220

Embora o VS Code seja um ótimo editor para projetos TypeScript, ele precisa de um pontapé de vez em quando. Freqüentemente, sem aviso, certos arquivos fazem com que surte e se queixe. Principalmente, a correção parece ser salvar e fechar todos os arquivos abertos e, em seguida, abrir tsconfig.json. Depois disso, você poderá abrir novamente o arquivo incorreto sem erros. Se não funcionar, ensaboar, enxaguar e repetir.

Se você tsconfig.jsonespecificar seus arquivos de origem usando a filesmatriz, o IntelliSense funcionará corretamente apenas se o arquivo em questão for referenciado, para que o VS Code possa encontrá-lo percorrendo a árvore de arquivos de entrada.

Edit: O comando 'reload window' (adicionado anos atrás agora) deve resolver esse problema de uma vez por todas.

linguamachina
fonte
5
Obrigado - remoção de "arquivos" do problema tsconfig.json determinação
bensiu
4
A resposta não foi realmente relevante para o meu caso, mas de alguma forma ajudou a descobrir o meu problema. Estou usando o VS 2015 e entre alterar o arquivo xproje tsconfig, perdi o fato de a pasta com meus arquivos de script estar listada na excludeseção tsconfig. Espero que isso ajude alguém.
Stefan Balan
19
Arquivo> Fechar pasta> Abrir pasta funcionou para mim. Isso aconteceu depois que eu reiniciei a máquina sem fechar corretamente o vscode.
Adrian Moisa
3
E se eu não estiver usando texto datilografado? Somente javascript es6?
22417 DDD
3
Não tenho certeza de quando foi adicionado, mas a paleta de comandos agora tem "Recarregar Janela", o que é ideal para esse tipo de coisa.
Coderer
185

Eu tenho que adicionar o seguinte no arquivo settings.json do vscode para remover o aviso.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Preferências -> Configurações

insira a descrição da imagem aqui

Manoj Paul
fonte
Muito obrigado. Estou usando decoradores es6 + e não tenho o datilógrafo instalado. Impressionante.
Akhmedzianov Danilian
3
Essa resposta é a melhor, porque não há necessidade de criar um arquivo separado no projeto para resolver um problema do VSCode.
Rodrigo
ctrl + ,tecla de atalho para abrir as configurações do usuário. em usersettings clique 3 pontos ( ...), em seguida, no pop-up clique Open settings.jsonpara abertosettings.json
suhailvs
Muito obrigado. Muito útil.
an0nh4x0r 15/06
102

Este erro também ocorre quando você escolhe a pasta "src" para a pasta da área de trabalho.

Quando a pasta raiz, a pasta em que estão localizados o "src", "node_modules", o erro desaparece

Semir Deljić
fonte
9
Vim aqui para postar isso. Isso consertou para mim. Eu estava usando o Angular 2 via CLI Angular.
assíncrono
Caso o exposto acima não seja compreensível: o Vscode deve carregar a pasta onde o arquivo de configuração deve saber sobre ele. Se você deseja carregar um grupo mais abaixo, acho que você poderia escrever um novo arquivo de configuração que seria válido a partir dessa pasta e abaixo.
LosManos 16/03
Foi isso. Obrigado :)
Kamil
46

Arquivo -> Preferências -> Configurações

Dmitriy Botov
fonte
Para mim, o problema apareceu na versão 1.37 e sua solução resolveu.
Stephane
32

dentro do seu projeto, crie o arquivo tsconfig.json e adicione estas linhas

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

tem que adicionar typescript.tsdkao meu .vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"
beewest
fonte
5
Isso resolveu o problema para mim, mas essa linha vai para .vscode/settings.jsoncomo por este
Fran Rodriguez
1
Também resolvi isso para mim, mas eu não tinha a .vscodepasta (não sei por que - eu sou um desenvolvedor de back-end, deixe-me em paz!), Então criei um na pasta raiz com o referido settings.jsonarquivo.
Aage
17

No VSCode, vá para Arquivo => Preferências => Configurações (ou Control + vírgula) e ele abrirá o arquivo Configurações do Usuário. Procure "javascript.implicitProjectConfig.experimentalDecorators": true e marque a caixa de seleção experimentalDecorators no arquivo, que deve ser corrigida. Isso fez por mim.

insira a descrição da imagem aqui

Taqi Raza Khan
fonte
13

No Visual Code Studio, vá para Arquivo >> Preferências >> Configurações, pesquise "decorador" no campo de pesquisa e Marque a opção como na imagem. insira a descrição da imagem aqui

Muzaffar Mahmood
fonte
11

Abrir settings.jsonarquivo no seguinte local<project_folder>/.vscode/settings.json

ou você pode abrir o arquivo no menu como mencionado abaixo

VSCode -> File -> Preferences -> Workspace Settings

configurações experimentalDecorators

Em seguida, adicione as seguintes linhas no settings.jsonarquivo

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

Isso é tudo. Você não verá nenhum aviso / erro sobre ' experimentalDecorators '

Vinothkumar Arputharaj
fonte
11
Eu tenho "definição de configuração desconhecido" após a adição de "enable_typescript_language_service" usando vscode 1.8.1
David Cheung
5
Este é um conselho HORRÍVEL se o seu projeto usa o Typecript!
precisa saber é
1
Desativar "enable_typescript_language_service" desativaria efetivamente qualquer oferta TypeScript de cotação ativa, evite esta sugestão.
Jessy
10

Esta resposta é destinada a pessoas que estão usando um projeto Javascript e não a um Typecript . Em vez de um arquivo tsconfig.json, você pode usar um arquivo jsconfig.json .

No caso específico de ter os decoradores avisando, você deve escrever dentro do arquivo:

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

Para os comportamentos de buggy solicitados, é sempre melhor especificar o "include" no arquivo de configuração e reiniciar o editor. Por exemplo

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

Vai resolver esse problema.

Rajesh Pal
fonte
1
@adya: settings.json(usuário ou espaço de trabalho). Você também pode usar as configurações de GUI, como esta resposta faz
Frank Nocke
9

Adicione as seguintes linhas no tsconfig.json e reinicie o VS Code.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}
Geetesh
fonte
O reinício foi a chave para mim. Obrigado.
rynop
9

Não para enfatizar o ponto, mas certifique-se de adicionar o seguinte a

  • Configurações da área de trabalho, não configurações do usuário

em Arquivo >> Preferências >> Configurações

"javascript.implicitProjectConfig.experimentalDecorators": true

isso corrigiu o problema para mim e tentei algumas sugestões que encontrei aqui e em outros lugares.

petey m
fonte
4

Por uma questão de clareza e estupidez.

1) Abra .vscode / settings.json.

2) Adicione "typescript.tsdk": "node_modules / typescript / lib" nele.

3) Salve.

4) Reinicie o código do Visual Studio.

LEMUEL ADANE
fonte
4

Se você estiver trabalhando no Visual studio. Você pode tentar esta correção

  1. Descarregue seu projeto do visual studio
  2. Vá para o diretório inicial do seu projeto e abra o arquivo "csproj".
  3. Adicione TypeScriptExperimentalDecorators a esta seção, como mostra a imagem

    insira a descrição da imagem aqui

    1. Recarregue o projeto no Visual studio.

veja mais detalhes neste local.

kumar chandraketu
fonte
4

Se você estiver usando cli para compilar arquivos * .ts, poderá definir experimentalDecorators usando o seguinte comando:

 tsc filename.ts --experimentalDecorators "true"
Koji D'infinte
fonte
Obrigado, isso salvou minha frustração. Eu tinha as mesmas configurações do questionador, no entanto, estava usando o Sublime Text 3 e sua solução provou ser útil!
precisa saber é o seguinte
4

Verifique se você abriu no seu código VS a pasta do projeto inteiro e não apenas a pasta src, porque se você abrir apenas o src, o arquivo ts.config.json (localizado na pasta do projeto) não estará no escopo e O VS não reconhecerá os parâmetros dos decoradores experimentais.

No meu caso, isso corrigiu todos os problemas relacionados a esse problema.

dayanrr91
fonte
Este também foi o meu problema. Você pode ver node_modules? Você pode ver tsconfig.json? Caso contrário, abra uma nova janela vsCode, feche a janela antiga, escolha arquivo -> abrir pasta e selecione a pasta pai de srce node_modules, em vez de selecionar apenas src.
Kyle Vassella
3
  1. Abra o VScode.
  2. Pressione ctrl + vírgula
  3. Siga as instruções na captura de tela
    1. Pesquisa sobre experimentalDecorators
    2. Edite-o
Mostafa
fonte
2

Abra a pasta do projeto inteiro em vez do nome do projeto / src

tsconfig.json está fora da pasta src

Andrew Yavorsky
fonte
1

Corrigi o aviso removendo "baseUrl": "" do arquivo tsconfig.json

D. Greene
fonte
1

Você pode enfrentar esse problema se abrir um arquivo TS que exista fora do projeto. Por exemplo, estou usando o lerna e tive um arquivo aberto de outro pacote. Embora esse outro pacote tenha seu próprio tsconfig com decoradores experimentais, o VsCode não o honra.

sparebytes
fonte
1

Eu enfrentei o mesmo problema ao criar um serviço injetável no Angular 2. Eu tenho todas as coisas no tsconfig.json. Ainda estava recebendo esse erro na linha ColorsImmutable.

@Injectable()
export class ColorsImmutable {

E a correção foi registrar o serviço no nível do módulo ou no nível do componente usando a matriz de provedores.

providers:[ColorsImmutable ],
Mohammad Javed
fonte
1

Se você estiver usando o tempo de execução Deno JavaScript e TypeScript e ativar experimentalDecorators: true nas configurações ide tsconfig.json ou VSCode. Isso não vai funcionar. De acordo com o requisito do Deno, você precisa fornecer o tsconfig como um sinalizador ao executar um arquivo Deno. Consulte Opções personalizadas do compilador TypeScript

No meu caso particular, eu estava executando um teste de Deno e usado.

$ deno test -c tsconfig.json

Se for um arquivo, você tem algo como

 $ deno run -c tsconfig.json mod.ts

meu tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}
tksilicon
fonte
Eu já estou fazendo isso e ainda sem sorte, pois eles afirmam que os recursos experimentais do docs não irão funcionar,
Ezzabuzaid
Vai funcionar. Veja a resposta atualizada exatamente do conteúdo do meu tsconfig.json. Então veja este link github.com/manyuanrong/dso/issues/18
tksilicon
0

Adicionei esta opção ao tsconfig.json, "baseUrl": "front-end"Substitua front-end pelo nome do seu projeto angular-cli.

Sean Maxwell
fonte
0

Você também pode tentar com ng build. Acabei de reconstruir o aplicativo e agora ele não está em conformidade.

Leandro hereñu
fonte
0

Acontece que você pode contornar isso combinando o nome do seu módulo com o nome do arquivo. Se você tiver o nome do módulo BankSpecialtyModule, o nome do arquivo deverá ser. bank-Specialty.module.ts

Neal Connolly
fonte
0

Ocorreu esse erro quando criei um novo módulo e movi meu arquivo * .module.ts e * -routing.module.ts para outra pasta. Depois de excluir os dois arquivos e criar o módulo na nova pasta, ele funciona perfeitamente. Versão Angular do Ambiente 9 e CLI Angular versão 9.1.0

Yirga
fonte
0

Para mim, esse erro "Suporte experimental para decoradores é um recurso sujeito a alterações em uma versão futura. (Etc)" só aconteceu no VS Code em um projeto Angular e somente ao criar um novo Serviço.

A solução acima: "No Visual Code Studio, vá para Arquivo >> Preferências >> Configurações, pesquise" decorador "no campo de pesquisa e marque a opção JavaScript› Configuração implícita do projeto: decoradores experimentais "resolveu o problema.

Além disso, interromper o ng servir na janela do terminal e reiniciá-lo fez o erro desaparecer após a recompilação.

Ken
fonte