Búsqueda de sitios web

typescript - Visual Studio 2015 - errores en archivos *.d.ts en la carpeta node_modules


Estoy actualizando un proyecto de Angular JS a Angular 4. TypeScript ya se utiliza en el proyecto de Angular JS, y después de convertirlo estoy recibiendo miles de errores en Visual Studio por los archivos de tipado TypeScript de terceros (*.d.ts). También estoy recibiendo algunos errores en Visual Studio en los archivos TypeScript reales.

El código TypeScript se compila correctamente cuando uso el compilador de TypeScript desde la línea de comandos (tsc), así que quiero evitar la verificación de compilación de todos los archivos *.d.ts.

He revisado respuestas para problemas muy similares que sugieren cómo ignorar estos errores, sin embargo, ninguna de ellas funciona para mí, y la mayoría se relaciona con VS 2017.

Esto es lo que he intentado, para desactivar la comprobación de compilación:

Se agregó 'TypeScriptCompileBlocked' al archivo .csproj:

   <PropertyGroup>
      <TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
      ....
   </PropertyGroup>
  • luego cierra y vuelve a abrir VS

Archivo .eslintignore agregado

He añadido un archivo .eslintignore en la raíz del proyecto, con una configuración para ignorar todos los archivos *.d.ts:

**/*.d.ts
**/node_modules/*

Desactivar ESLint

En VS Tools > Opciones, he buscado una opción, pero no hay ninguna opción para hacer esto en VS2015

tsconfig.json - excluir la carpeta node_modules

"exclude": [
  "./node_modules/*"
]

-- I've also tried --   

   "node_modules"
   ... and
   "**/*.d.ts"

tsconfig.json - establecer "compileOnSave": false

{
  "compilerOptions": {
    "compileOnSave": false
  }
}

también he añadido lo siguiente a "compilerOptions":

"types": []

También he configurado varias otras opciones del compilador para ignorar errores, aunque los errores que estoy viendo no están relacionados con estas:

"noImplicitAny": false,
"suppressImplicitAnyIndexErrors": true,
"noStrictGenericChecks": true

¿Qué tengo que hacer para ignorar los archivos *.d.ts? Aquí hay un ejemplo de algunos de los errores que estoy viendo en el archivo node_modules\@angular\common\src\directives\ng_class.d.ts:

La configuración actual del proyecto es:

  • compilador (tsc) versión=1.8
  • Versión de TypeScript=2.6.2 (instalado vía npm)
  • No hay opciones de configuración de TypeScript establecidas directamente a través del proyecto de Visual Studio (es decir, en el archivo .csproj)

Mi tsconfig.json completo:

{
  "compilerOptions": {
    "target": "es5",
    "module": "ES2015",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": [ "es2015", "dom" ],
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true,
    "noStrictGenericChecks": true
  },
  "include": [ "**/*.ts" ],
  "exclude": [
    "node_modules"
  ]
}

(con respecto al valor que estoy usando para el módulo, esto es lo que dice la documentación de Microsoft):

Se pueden usar los valores "ES6" y "ES2015" al apuntar a "ES5" o inferior.

https://www.typescriptlang.org/docs/handbook/compiler-options.html

También he intentado usar "commonjs" como el valor

Respuesta #1

Descubrí que el TypeScript que tengo instalado a través de npm es una instalación completamente independiente de TypeScript (yo 'instalé con node' grunt-ts para la compilación automatizada de TypeScript, y por alguna razón grunt-ts necesita este TypeScript 'instalado con node'). Visual Studio no estaba usando el TypeScript instalado con node cuando intentaba compilar, estaba usando un compilador de TypeScript 1.8 que está instalado específicamente para Visual Studio.

Para instalar TypeScript 2.6.2 para su uso en VS2015, lo instalé desde aquí:

https://www.microsoft.com/en-us/download/details.aspx?id=48593

Esto creó una carpeta C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.6, que contiene un tsc.exe. Luego configuré esto en mi archivo .csproj

<TypeScriptToolsVersion>2.6</TypeScriptToolsVersion>

y eso solucionó todos los errores.

Para que el proyecto se construyera, también necesitaba incluir mi archivo tsconfig.json en el proyecto (clic derecho > incluir en el proyecto). Eso hace que Visual Studio ignore la configuración de TypeScript en el archivo .csproj y use tsconfig.json en su lugar

Tuve que descargar y volver a cargar el proyecto varias veces, guardando entre cada vez, hasta que las propiedades del proyecto de VS2015 fueron reconocidas por Visual Studio como deshabilitadas. Cerrar y volver a abrir Visual Studio, guardando cualquier cambio en el proyecto si se solicita, probablemente lograría lo mismo:

Así que parece que la razón por la que nada funcionaba para ignorar los archivos d.ts es porque Visual Studio no podía interpretar correctamente la solución y producir el resultado esperado.

Artículos relacionados