Tengo una referencia a un componente de registro externo (al que se hace referencia en un archivo js), que he definido en un archivo de tipificación
escribiendo.d.ts
declare var LogglyTracker;Actualicé mi aplicación angular de la versión 8 a la 9, y ahora, cuando ejecuto ng build , aparece el siguiente error
ERROR en src/app/error/loggly.service.ts:13:29 - error TS2304: No se puede encontrar el nombre 'LogglyTracker'.
¿Alguien sabe cuál es la forma recomendada de solucionar este problema? Este código funcionó bien en Angular 8.
@Injectable() export class LogglyLoggerService { // https://github.com/loggly/loggly-jslogger private loggly: any = new LogglyTracker(); //!! Error here }Tuve el mismo problema después de migrar de Angular 7 a Angular 9 .
Personalmente, solo tuve que agregar una línea en tsconfig.app.json .
antes :
{ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "types": [ "node" ] }, "files": [ "main.ts", "polyfills.ts" ], "include": [ "src/**/*.d.ts" ] }después de :
{ "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "types": [ "node" ] }, "files": [ "main.ts", "polyfills.ts" ], "include": [ "src/**/*.d.ts", "typings.d.ts" // add this line ] } Supuse que ya había realizado cambios en tsconfig.json antes de migrar a Angular 9. Si no, aquí está:
{ ... "compilerOptions": { ... "typeRoots": [ "node_modules/@types", "src/typings.d.ts" ], ... } }Tuve exactamente el mismo problema que el autor: después de actualizar a Angular 9, ya no se encontraron mis definiciones de tipo local.
En Angular 8, agregué referencias a ellos en tsconfig.json
"typeRoots": [ "node_modules/@types", "../src/typings/my-lib/index.d.ts" "node_modules/@types" ] Después de actualizar a Angular 9, ya no se encontró my-lib . Generé una nueva aplicación usando Angular 9 CLI y descubrí que 2 archivos residen en diferentes ubicaciones:
src/tsconfig.app.json -> tsconfig.app.jsonsrc/tsconfig.spec.json -> tsconfig.spec.json Hice un cambio similar en mi proyecto migrado, actualicé las referencias a estos archivos en angular.json y corregí los punteros a otros archivos en tsconfig.app.json y tsconfig.spec.json
Como resultado, mi tsconfig.app.json se ve así:
{ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/app", "types": ["jest"] }, "files": [ "src/main.ts", "src/polyfills.ts" ], "include": [ "src/**/*.d.ts" ] } Tenga en cuenta que todos los archivos d.ts ubicados en el directorio src se extraerán automáticamente (no es necesaria ninguna referencia en la sección typeRoots de tsconfig.json )