Advertencia de decoradores experimentales en la compilación de TypeScript

251

Recibo la advertencia ...

El soporte experimental para decoradores es una característica que está sujeta a cambios en una versión futura. Establezca la opción 'experimentalDecorators' `para eliminar esta advertencia.

... a pesar de que mi compilerOptions en tsconfig.json tiene la siguiente configuración:

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

Lo extraño es que algunas clases aleatorias que usan decoradores no muestran esa advertencia, pero el resto en el mismo proyecto sí.

¿Qué podría causar tal comportamiento en el compilador TypeScript?

bensiu
fuente
19
¿Has intentado reiniciar VS Code? He descubierto que es necesario después de hacer cambios tsconfig.json a veces.
David Sherret
2
Puedes intentar golpe respuesta amigo. ¡Funciona para mí! stackoverflow.com/a/38970591/2468781
eildiz
10
Por casualidad, si alguien más se encuentra con esto que está usando VS Professional, no VS Code, es posible que haya agregado un .tsarchivo a un proyecto angular manualmente; si es así, la compilación predeterminada de TS está en conflicto con Angular CLI. Haga clic con el botón derecho en el archivo -> Propiedades -> Acción de compilación: ninguna. Luego reinicie VS si es necesario.
pbarranis
2
El reinicio de VS Code me ayudó a resolver el problema.
CMA
44
Sucedí que inicié VSCode ( code .) en el directorio incorrecto. Todo parecía estar bien, vi y pude editar todos mis archivos, así que al principio no noté que nada estaba "mal". Pero recibí esa estúpida advertencia de "decoradores experimentales" en uno, ¡y solo en uno! - Componente angular. Salí de VSCode, reinicié ( code .nuevamente) en el directorio CORRECTO (la raíz de mi proyecto Angular) ... y la advertencia desapareció.
paulsm4

Respuestas:

220

Aunque VS Code es un gran editor para proyectos TypeScript, necesita una patada de vez en cuando. A menudo, sin previo aviso, ciertos archivos hacen que se asuste y se queje. En general, la solución parece ser guardar y cerrar todos los archivos abiertos y luego abrirlos tsconfig.json. Después de eso, debería poder volver a abrir el archivo ofensivo sin error. Si no funciona, haga espuma, enjuague y repita.

Si tsconfig.jsonespecifica sus archivos fuente utilizando la filesmatriz, IntelliSense solo funcionará correctamente si se hace referencia al archivo en cuestión de manera que VS Code pueda encontrarlo atravesando el árbol de archivos de entrada.

Editar: El comando 'recargar ventana' (agregado hace años) debería resolver este problema de una vez por todas.

linguamachina
fuente
55
Gracias - eliminando "archivos" de tsconfig.json resuelve el problema
bensiu
44
La respuesta no fue realmente relevante para mi caso, pero de alguna manera me ayudó a resolver mi problema. Estoy usando VS 2015 y entre cambiar el archivo xprojy tsconfig, me perdí el hecho de que la carpeta con mis archivos de script se enumeró en la excludesección de tsconfig. Espero que esto ayude a alguien.
Stefan Balan
19
Archivo> Cerrar carpeta> Abrir carpeta funcionó para mí. Esto sucedió después de reiniciar la máquina sin cerrar correctamente vscode.
Adrian Moisa
3
¿Qué pasa si no estoy usando el mecanografiado? Solo javascript es6?
DDD
3
No estoy seguro de cuándo se agregó, pero la paleta de comandos ahora tiene "Ventana de recarga", que es ideal para este tipo de cosas.
Coderer el
185

Tengo que agregar lo siguiente en el archivo settings.json de vscode para eliminar la advertencia.

"javascript.implicitProjectConfig.experimentalDecorators": true

VSCode -> Preferencias -> Configuración

ingrese la descripción de la imagen aquí

Manoj Paul
fuente
Muchas gracias. Estoy usando decoradores es6 + y no tengo instalado el mecanografiado. Increíble.
Akhmedzianov Danilian
3
Esta respuesta es la mejor, porque no hay necesidad de crear un archivo separado en el proyecto para resolver un problema de VSCode.
Rodrigo
ctrl + ,tecla de acceso directo para abrir configuraciones de usuario. en la configuración del usuario, haga clic en 3 puntos ( ...) y luego en la Open settings.jsonsettings.json
ventana
Muchas gracias. Muy útil.
an0nh4x0r
102

Este error también ocurre cuando elige la carpeta "src" para su carpeta de espacio de trabajo.

Cuando se elige la carpeta raíz, la carpeta donde se encuentran "src", "node_modules", el error desaparece

Semir Deljić
fuente
99
Vine aqui para publicar esto. Esto me lo arregló. Estaba usando Angular 2 a través de Angular CLI.
async
En caso de que lo anterior no fuera comprensible: Vscode debe cargar la carpeta donde debe saber el archivo de configuración. Si desea cargar una carpeta más abajo, supongo que podría escribir un nuevo archivo de configuración que sería válido desde esa carpeta y más abajo.
LosManos
Eso fue todo. Gracias :)
Kamil
47

Archivo -> Preferencias -> Configuración

Dmitriy Botov
fuente
Para mí, el problema apareció en la versión 1.37 y su solución lo resolvió.
Stephane
32

dentro de su proyecto, cree el archivo tsconfig.json, luego agregue estas líneas

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

tiene que agregar typescript.tsdka mi .vscode/settings.json:

"typescript.tsdk": "node_modules/typescript/lib"
Beewest
fuente
55
Esto resolvió el problema para mí, pero esa línea entra .vscode/settings.jsonsegún esto
Fran Rodriguez
1
También lo resolvió para mí, pero no tenía la .vscodecarpeta (no sé por qué, soy un desarrollador de back-end, ¡déjenme solo!), Así que creé uno en la carpeta raíz con dicho settings.jsonarchivo.
Aage
17

En VSCode, vaya a Archivo => Preferencias => Configuración (o Control + coma) y se abrirá el archivo de Configuración del usuario. Busque "javascript.implicitProjectConfig.experimentalDecorators": verdadero y luego marque la casilla de verificación experimentalDecorators en el archivo y debería solucionarlo. Lo hizo por mi.

ingrese la descripción de la imagen aquí

Taqi Raza Khan
fuente
13

En Visual Code Studio, vaya a Archivo >> Preferencias >> Configuración, busque "decorador" en el campo de búsqueda y marque la opción como en la imagen. ingrese la descripción de la imagen aquí

Muzaffar Mahmood
fuente
11

Abrir settings.jsonarchivo en la siguiente ubicación<project_folder>/.vscode/settings.json

o puede abrir el archivo desde el menú como se menciona a continuación

VSCode -> File -> Preferences -> Workspace Settings

Configuración experimental de decoradores

Luego agregue las siguientes líneas en el settings.jsonarchivo

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

Eso es todo. No verá ninguna advertencia / error con respecto a ' experimentalDecorators '

Vinothkumar Arputharaj
fuente
11
Obtuve "Configuración de configuración desconocida" después de agregar "enable_typescript_language_service" usando vscode 1.8.1
David Cheung
55
¡Este es un consejo HORRIBLE si su proyecto usa Typecript!
paulsm4
1
Deshabilitar "enable_typescript_language_service" desactivaría efectivamente cualquier oferta de TypeScript de linting en vivo, por favor evite esta sugerencia.
Jessy
10

Esta respuesta está destinada a personas que usan un proyecto Javascript y no uno mecanografiado . En lugar de un archivo tsconfig.json , puede usar un archivo jsconfig.json .

En el caso particular de que los decoradores adviertan que desea escribir dentro del archivo:

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

Para los comportamientos con errores solicitados, siempre es mejor especificar la "inclusión" en el archivo de configuración y reiniciar el editor. P.ej

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

Resolverá este problema.

Rajesh Pal
fuente
1
@nadya: settings.json(usuario o espacio de trabajo). También puede usar la configuración de la interfaz
gráfica de usuario
9

Agregue las siguientes líneas en tsconfig.json y reinicie VS Code.

{
    "compilerOptions": {
        "experimentalDecorators": true,
        "target": "es5",
        "allowJs": true
    }
}
Geetesh
fuente
El reinicio fue la clave para mí. Gracias.
rynop
9

No para difamar el punto, pero asegúrese de agregar lo siguiente a

  • Configuración del espacio de trabajo, no Configuración del usuario

en Archivo >> Preferencias >> Configuración

"javascript.implicitProjectConfig.experimentalDecorators": verdadero

Esto solucionó el problema para mí, e intenté algunas sugerencias que encontré aquí y en otros lugares.

petey m
fuente
4

En aras de la claridad y la estupidez.

1) Abra .vscode / settings.json.

2) Agregue "typescript.tsdk": "node_modules / typescript / lib" en él.

3) Guárdalo.

4) Reinicie Visual Studio Code.

LEMUEL ADANE
fuente
4

Si estás trabajando en Visual Studio. Puedes probar esta solución

  1. Descarga tu proyecto desde Visual Studio
  2. Vaya al directorio de inicio de su proyecto y abra el archivo "csproj".
  3. Agregue TypeScriptExperimentalDecorators a esta sección como se muestra en la imagen

    ingrese la descripción de la imagen aquí

    1. Vuelva a cargar el proyecto en Visual Studio.

Ver más detalles en esta ubicación.

Kumar Chandraketu
fuente
4

Si está utilizando cli para compilar archivos * .ts, puede configurar experimentalDecorators con el siguiente comando:

 tsc filename.ts --experimentalDecorators "true"
Koji D'infinte
fuente
Gracias, esto salvó mi frustración. Tenía la misma configuración que el interrogador, sin embargo, estaba usando Sublime Text 3 , ¡y su solución ha resultado ser útil!
Irfandy Jip
4

Verifique que haya abierto en su Código VS la carpeta de todo el proyecto y no solo la carpeta src, porque si abre solo el src, entonces el archivo ts.config.json (ubicado en la carpeta del proyecto) no estará dentro del alcance, y VS no reconocerá los parámetros decoradores experimentales.

En mi caso, esto solucionó todos los problemas relacionados con este problema.

dayanrr91
fuente
Este también fue mi problema. ¿Puedes ver node_modules? ¿Puedes ver tsconfig.json? De lo contrario, abra una nueva ventana vsCode, cierre la ventana anterior, elija el archivo -> abrir carpeta y asegúrese de seleccionar la carpeta principal de srcy node_modules, en lugar de seleccionar solo src.
Kyle Vassella
3
  1. Abra VScode.
  2. Presione ctrl + coma
  3. Siga las instrucciones en la captura de pantalla
    1. Buscar sobre decoradores experimentales
    2. Editarlo
Mostafa
fuente
2

Abra la carpeta completa del proyecto en lugar de project-name / src

tsconfig.json está fuera de la carpeta src

Andrew Yavorsky
fuente
1

Corrija la advertencia eliminando "baseUrl": "", del archivo tsconfig.json

D. Greene
fuente
1

Puede encontrarse con este problema si abre un archivo TS que existe fuera del proyecto. Por ejemplo, estoy usando lerna y tenía un archivo abierto desde otro paquete. Aunque ese otro paquete tenía su propio tsconfig con decoradores experimentales, VsCode no lo respeta.

sobrantes
fuente
1

Enfrenté el mismo problema al crear un servicio inyectable en Angular 2. Tengo todas las cosas en orden en tsconfig.json. Todavía recibo este error en la línea ColorsImmutable.

@Injectable()
export class ColorsImmutable {

Y la solución fue registrar el Servicio a nivel de módulo o Nivel de componente utilizando la matriz de proveedores.

providers:[ColorsImmutable ],
Mohammad Javed
fuente
1

Si usa Deno JavaScript y TypeScript runtime y habilita experimentalDecorators: true en tsconfig.json o la configuración de ide VSCode. No funcionará. De acuerdo con el requisito de Deno, debe proporcionar tsconfig como indicador cuando se ejecuta un archivo Deno. Ver las opciones del compilador TypeScript personalizado

En mi caso particular, estaba ejecutando una prueba de Deno y la usé.

$ deno test -c tsconfig.json

Si es un archivo, tienes algo como

 $ deno run -c tsconfig.json mod.ts

my tsconfig.json

{
  "compilerOptions": {
    "allowJs": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "module": "esnext"
  }
}
tksilicon
fuente
Ya estoy haciendo esto y, sin embargo, no tuve suerte, ya que dicen que las características experimentales de los documentos no funcionarán,
Ezzabuzaid
Funcionará. Vea la respuesta actualizada de exactamente el contenido de mi tsconfig.json. Entonces vea este enlace github.com/manyuanrong/dso/issues/18
tksilicon
0

Agregué esta opción a tsconfig.json, "baseUrl": "front-end"Reemplace el front-end con el nombre de su proyecto angular-cli.

Sean Maxwell
fuente
0

También puedes probar con ng build. Acabo de reconstruir la aplicación y ahora no está cumpliendo.

Leandro hereñu
fuente
0

Resulta que puede evitar esto haciendo coincidir el nombre de su módulo con el nombre del archivo. Si tiene el nombre del módulo BankSpecialtyModule, entonces el nombre del archivo debería ser. bank-specialty.module.ts

Neal Connolly
fuente
0

Experimenté este error cuando creé un nuevo módulo y moví mi archivo * .module.ts y * -routing.module.ts a otra carpeta. Después de eliminar los dos archivos y crear el módulo en la nueva carpeta, funciona perfectamente. Environment Angular Versión 9 y Angular CLI versión 9.1.0

Yirga
fuente
0

Para mí, este error "El soporte experimental para decoradores es una característica que está sujeta a cambios en una versión futura. (Etc.)" solo ocurrió en VS Code en un proyecto angular y solo al crear un nuevo Servicio.

La solución anterior: "En Visual Code Studio Ir a Archivo >> Preferencias >> Configuración, Buscar" decorador "en el campo de búsqueda y Verificar la opción JavaScript› Configuración implícita del proyecto: Decoradores experimentales "resolvió el problema.

Además, al detener el ng serve en la ventana de terminal y reiniciarlo, el error desapareció después de la recompilación.

Conocido
fuente