TS1086: Un accesseur ne peut pas être déclaré dans un contexte ambiant


13

J'ai des milliers de cette erreur après la mise en œuvre initiale, taper dans le terminal ng mon application et je ne peux pas le résoudre. C'est la première fois pour moi quand j'ai un problème comme celui-ci à l'intérieur angulaire avec des erreurs de frappe ressemble à ceci:

ERREUR dans ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:24:19 - erreur TS1086: Un accesseur ne peut pas être déclaré dans un contexte ambiant.

24     protected get parentElement(): HTMLElement | null;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:26:19

- erreur TS1086: Un accesseur ne peut pas être déclaré dans un contexte ambiant.

26     protected get nativeElement(): HTMLElement;
                     ~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:28:9

- erreur TS1086: Un accesseur ne peut pas être déclaré dans un contexte ambiant.

28     get activatedValue(): string;
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:29:9

- erreur TS1086: Un accesseur ne peut pas être déclaré dans un contexte ambiant.

29     set activatedValue(value: string);
           ~~~~~~~~~~~~~~
../../node_modules/@angular/flex-layout/core/typings/breakpoints/break-point-registry.d.ts:20:9

- erreur TS1086: Un accesseur ne peut pas être déclaré dans un contexte ambiant. [...]

Quelqu'un connaît-il une raison? Je ne peux pas tester mon application tant que je ne l'ai pas corrigée.

Mise à jour 1

D'accord, je vais de l'avant. La plupart des erreurs ont disparu, mais j'en ai maintenant quelques-unes, par exemple la première:

ERREUR dans src / app / main / main.component.ts: 143: 63 - erreur TS2322: tapez 'chaîne | undefined 'n'est pas assignable au type' string '. Le type «non défini» n'est pas attribuable au type «chaîne».

143 this.fileService.add ({isFolder: true, nom: folder.name, parent: this.currentRoot? This.currentRoot.id: 'root'});

Le code ressemble à ceci:

main.component.ts:

currentRoot: MpFileElement = new MpFileElement();
...
    addFolder(folder: { name: string }) {
        this.fileService.add({ isFolder: true, name: folder.name, parent: 
    this.currentRoot ? this.currentRoot.id : 'root' });
        this.updateFileElementQuery();
    }
...

file.service.ts:

import { Injectable } from '@angular/core';

import { v4 } from 'uuid';
import { MpFileElement } from '../models/mp-file-element.model';
import { Observable } from 'rxjs/internal/Observable';
import { BehaviorSubject } from 'rxjs';

export interface IFileService {
    add(fileElement: MpFileElement);
    delete(id: string);
    update(id: string, update: Partial<MpFileElement>);
    queryInFolder(folderId: string): Observable<MpFileElement[]>;
    get(id: string): MpFileElement;
}

@Injectable()
export class MpFileService implements IFileService {

    constructor() {}
    private map = new Map<string, MpFileElement>()

    private querySubject: BehaviorSubject<MpFileElement[]>;

    add(fileElement: MpFileElement) {
        fileElement.id = v4();
        this.map.set(fileElement.id, this.clone(fileElement));
        return fileElement;
    }

    delete(id: string) {
        this.map.delete(id);
    }

    update(id: string, update: Partial<MpFileElement>) {
        let element = this.map.get(id);
        element = Object.assign(element, update);
        this.map.set(element.id, element);
    }
    queryInFolder(folderId: string) {
        const result: MpFileElement[] = [];
        this.map.forEach(element => {
            if (element.parent === folderId) {
                result.push(this.clone(element));
            }
        })
        if (!this.querySubject) {
            this.querySubject = new BehaviorSubject(result);
        } else {
            this.querySubject.next(result);
        }
        return this.querySubject.asObservable();
    }

    get(id: string) {
        return this.map.get(id);
    }

    clone(element: MpFileElement) {
        return JSON.parse(JSON.stringify(element));
    }
}

1
Sam

@Sam J'ai lu ceci et rien n'y fait - malheureusement
xavn-mpt

1
Utilisez-vous la version 9.0.0-beta.28de @ angular / flex-layout? J'essaierais de revenir à la version précédente avant de heurter la version TS.
Sam

@Sam j'ai changé dans package.json pour une version plus ancienne et stil ont le même problème après avoir supprimé node_modules, package-lock.json et réinstallé le tout.
xavn-mpt

@Sam en ce moment, il 8.0.0-beta.27
xavn-mpt

Réponses:


16

J'ai eu ce même problème, et ces 2 commandes m'ont sauvé la vie. Mon problème sous-jacent est que je me trompe toujours avec l'installation globale et l'installation locale. Peut-être que vous êtes confronté à un problème similaire, et j'espère que l'exécution de ces commandes résoudra également votre problème.

ng update --next @angular/cli --force
npm install typescript@latest

CA marchait bien pour moi.
c'est le

2
cela fonctionne pour moi. mais je dois rétrograder ma version dactylographiée à 3.6.x. au-dessus de 3.8.0 ne fonctionne pas et renvoie une erreur.
Hardik Patel

12

La mise "skipLibCheck": trueen place a tsconfig.jsonrésolu mon problème

"compilerOptions": {
    "skipLibCheck": true
}

1
Cela a également fonctionné pour moi et je pense que c'est bien pour un POC ou un exemple de projet, mais un autre fil discute des inconvénients potentiels de le faire en général: stackoverflow.com/questions/52311779/…
ewomack

c'est du travail pour moi, après de nombreuses tentatives, j'ai enfin commencé mon projet de démonstration metronic. Merci!
JMSamudio

7

J'ai eu le même problème lors de l'ajout de @ angular / flex-layout à mon projet Angular 8 maintenant avec

`npm install @angular/flex-layout --save`.

Depuis, cette commande a installé la 9ème version majeure du package flex-layout. Au lieu de mettre à niveau tout le reste vers la dernière version, je l'ai résolu en installant la dernière 8e version principale du package à la place.

 npm install @angular/flex-layout@8.0.0-beta.27 --save

2

Il semble que vous ayez récemment installé le package flex-layout. Essayez de supprimer ce dossier de package de votre dossier node_modules et de réinstaller la version précédente de ce package.

Récemment (2 jours avant la date actuelle), angular a publié la dernière version angular-cli (v9.0.1) en raison de laquelle de nombreux packages sont mis à jour pour prendre en charge cette dernière version cli. Dans votre cas, vous pourriez avoir l'ancienne version de cli et lorsque vous avez installé ce package, il a été téléchargé par défaut pour la dernière version de cli. Essayez donc de rétrograder la version de votre package. A travaillé pour moi au moins.

N'oubliez pas non plus de rétrograder la version de votre package dans le fichier package.json


2

essayer

ng update @angular/core @angular/cli

Ensuite, juste pour synchroniser le matériel, exécutez:

ng update @angular/material


2

Solution rapide: mettez à jour package.json

"devDependencies": {
   ...
   "typescript": "~3.7.4",
 }

Dans tsconfig.json

{
    ...,
    "angularCompilerOptions": {
       ...,
       "disableTypeScriptVersionCheck": true
    }
}

puis supprimez le dossier node_modules et réinstallez avec

installation de npm

Pour plus de visite ici


0

c'est une brève réponse que j'espère aider

Essayez de rétrograder l'Agular et Angular-CLI vers la v8, je pense que votre problème est un problème de compatibilité des packages


0

Je pense que votre problème est né de la non-concordance de la typographie et de la version du module. Ce problème est très similaire à votre question et les réponses sont très satisfaisantes.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.