web-dev-qa-db-fra.com

Après la mise à niveau vers Angular 9 ne peut pas trouver de variable dans le fichier de typages

J'ai une référence à un composant de journalisation externe (référencé dans un fichier js), que j'ai défini dans un fichier de typages

typings.d.ts

declare var LogglyTracker;

J'ai mis à jour mon angular application de la version 8 à 9, et maintenant, lorsque je lance ng build, j'obtiens l'erreur suivante

ERREUR dans src/app/error/loggly.service.ts: 13: 29 - erreur TS2304: Impossible de trouver le nom "LogglyTracker".

Quelqu'un sait-il quelle est la méthode recommandée pour résoudre ce problème? Ce code fonctionnait bien dans Angular 8.

@Injectable()
export class LogglyLoggerService {

// https://github.com/loggly/loggly-jslogger
private loggly: any = new LogglyTracker(); //!! Error here
}
8
jazza1000

J'ai eu exactement le même problème que l'auteur - après la mise à niveau vers Angular 9, mes définitions de type locales n'étaient plus trouvées.

Dans Angular 8, j'ai ajouté des références à eux dans tsconfig.json

"typeRoots": [
    "node_modules/@types",
    "../src/typings/my-lib/index.d.ts"
    "node_modules/@types"
  ]

Après la mise à niveau vers Angular 9, my-lib n'a plus été trouvé. J'ai généré une nouvelle application en utilisant Angular 9 CLI, et j'ai trouvé que 2 fichiers résident à des emplacements différents:

  • src/tsconfig.app.json -> tsconfig.app.json
  • src/tsconfig.spec.json -> tsconfig.spec.json

J'ai effectué une modification similaire dans mon projet migré, mis à jour les références à ces fichiers dans angular.json et corrigé des pointeurs vers d'autres fichiers dans tsconfig.app.json et tsconfig.spec.json

En conséquence, mon tsconfig.app.json ressemble à:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": ["jest"]
  },
  "files": [
    "src/main.ts",
    "src/polyfills.ts"
  ],
  "include": [
    "src/**/*.d.ts"
  ]
}

Notez que tout d.ts les fichiers placés sous le répertoire src seront automatiquement extraits (aucune référence dans la section typeRoots de tsconfig.json est nécessaire)

2
Lesiak

Dans Angular 9 ajouter au fichier tsconfig.app.json (car il réside dans le dossier src, donc *.d.ts sont sous le dossier app):

  "include": [
      "app/**/*.d.ts"
  ]
0
Cyclion