1
votes

Échec de la construction de l'Ionic 4 (pas de condensateur) avec une erreur @ firebase / logger [TS1068: Un accesseur ne peut pas être déclaré dans un contexte ambiant]

La compilation Ionic échoue après avoir ajouté firebase et @ angular / fire à mon projet. J'utilise Firebase et angularFire depuis des lustres, mais soudainement, ce problème est survenu lors de la construction.

Semble être lié à un problème lié au fichier logger.d.ts , cependant, je n'utilise même pas Logger de firebase. Il doit s'agir d'un appel interne, d'une recherche sur le Web pendant des heures mais n'a pas pu trouver de réponse, j'espère que quelqu'un a peut-être rencontré ce problème plus tôt? peut faire la lumière?

Voici l'image du message d'erreur

 entrez la description de l'image ici

"dependencies": {
    "@angular/common": "~8.2.14",
    "@angular/core": "~8.2.14",
    "@angular/fire": "^5.4.2",
    "@angular/forms": "~8.2.14",
    "@angular/platform-browser": "~8.2.14",
    "@angular/platform-browser-dynamic": "~8.2.14",
    "@angular/router": "~8.2.14",
    "@ionic-native/core": "^5.0.0",
    "@ionic-native/device": "^5.23.0",
    "@ionic-native/http": "^5.23.0",
    "@ionic-native/splash-screen": "^5.0.0",
    "@ionic-native/status-bar": "^5.0.0",
    "@ionic/angular": "^5.0.0",
    "cordova-android": "8.1.0",
    "cordova-ios": "5.1.1",
    "cordova-plugin-advanced-http": "^2.4.1",
    "cordova-plugin-file": "^6.0.2",
    "core-js": "^2.5.4",
    "firebase": "^7.13.1",
    "lodash": "^4.17.15",
    "rxjs": "~6.5.1",
    "tslib": "^1.9.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.803.20",
    "@angular/cli": "~8.3.23",
    "@angular/compiler": "~8.2.14",
    "@angular/compiler-cli": "~8.2.14",
    "@angular/language-service": "~8.2.14",
    "@ionic/angular-toolkit": "^2.1.1",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/lodash": "^4.14.149",
    "@types/node": "~8.9.4",
    "codelyzer": "^5.0.0",
    "cordova-plugin-device": "^2.0.2",
    "cordova-plugin-ionic-keyboard": "^2.2.0",
    "cordova-plugin-ionic-webview": "^4.1.3",
    "cordova-plugin-splashscreen": "^5.0.2",
    "cordova-plugin-statusbar": "^2.4.2",
    "cordova-plugin-whitelist": "^1.3.3",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",
    "npm-force-resolutions": "0.0.3",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.4.3"
  },

Mon package.json ressemble à ce qui suit

> ng run app:build

ERROR in node_modules/@firebase/logger/dist/src/logger.d.ts:70:9 - error TS1086: An accessor cannot be declared in an ambient context.

70     get logLevel(): LogLevel;
           ~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:71:9 - error TS1086: An accessor cannot be declared in an ambient context.

71     set logLevel(val: LogLevel);
           ~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:77:9 - error TS1086: An accessor cannot be declared in an ambient context.

77     get logHandler(): LogHandler;
           ~~~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:78:9 - error TS1086: An accessor cannot be declared in an ambient context.

78     set logHandler(val: LogHandler);
           ~~~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:83:9 - error TS1086: An accessor cannot be declared in an ambient context.

83     get userLogHandler(): LogHandler | null;
           ~~~~~~~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:84:9 - error TS1086: An accessor cannot be declared in an ambient context.

84     set userLogHandler(val: LogHandler | null);
           ~~~~~~~~~~~~~~

[ERROR] An error occurred while running subprocess ng.

        ng run app:build exited with exit code 1.

        Re-running this command with the --verbose flag may provide more information.

Veuillez aider si quelqu'un le peut.


0 commentaires

3 Réponses :


1
votes

J'obtiens également cela en essayant de mettre à jour mon paquet Firebase à partir de la version 7.11.0 et plus. Essayez de corriger la version de Firebase à 7.11.0.

Quant à une vraie solution à long terme, je suis également intéressé.


1 commentaires

malheureusement, je travaille à ma fin. J'ai supprimé le dossier node_module, supprimé le fichier package-lock.json, changé la version de firebase en 7.11.0 et exécuté npm install, mais les mêmes erreurs que là-haut: (je vais essayer de supprimer d'autres plugins et voir si quelque chose d'autre est déduit , avec les packages !!! mettra à jour mes résultats ici



4
votes

Solution 1

Vous devez utiliser TypeScript 3.7.
À partir de TypeScript 3.7 notes de version : p>

Pour détecter le problème autour des accesseurs, TypeScript 3.7 émettra désormais des accesseurs get / set dans les fichiers .d.ts afin que dans TypeScript puisse vérifier les accesseurs remplacés.

Vous devrez donc soit mettre à niveau vers TypeScript 3.7, soit utiliser une version antérieure de Firebase.

Solution 2

Définir skipLibCheck à true dans votre tsconfig.json .

"compilerOptions": {
  "skipLibCheck": true,
  ...
}

2 commentaires

vous êtes un homme qui sauve la vie, la solution 2 a très bien fonctionné pour moi. Merci


Merci, bonne explication et solutions. Je viens de passer une demi-journée à essayer différentes correspondances de versions de dépendances, et pour une résolution rapide, votre deuxième solution fonctionne très bien.



0
votes

J'ai eu un problème avec Ionic 4, j'ai rétrogradé Firebase à 7.10.

Impossible d'utiliser Typescript> 3.6 avec Angular 8, ou lève ERROR dans Angular Compiler requiert TypeScript> = 3.4.0 et <3.6.0 mais 3.8.3 a été trouvé à la place.

Je n'ai pas essayé de basculer l'option du compilateur skipLibCheck , cela ne semble pas être une solution à long terme.

Au fait, merci à tous pour le fil, sauve ma journée ;-)


0 commentaires