TS1086: Ein Accessor kann nicht im Umgebungskontext deklariert werden

13

Ich habe Tausende von diesem Fehler nach der ersten Implementierung und tippe in Terminal ng Serve My-App von und ich kann es nicht beheben. Dies ist das erste Mal für mich, wenn ich ein solches Problem im Winkel mit Typoskript habe. Fehler sehen folgendermaßen aus:

FEHLER in ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:24:19 - Fehler TS1086: Ein Accessor kann nicht in einem Umgebungskontext deklariert werden.

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

- Fehler TS1086: Ein Accessor kann nicht in einem Umgebungskontext deklariert werden.

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

- Fehler TS1086: Ein Accessor kann nicht in einem Umgebungskontext deklariert werden.

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

- Fehler TS1086: Ein Accessor kann nicht in einem Umgebungskontext deklariert werden.

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

- Fehler TS1086: Ein Accessor kann nicht in einem Umgebungskontext deklariert werden. [...]

Kennt jemand einen Grund? Ich kann meine App erst testen, wenn ich sie repariert habe.

Update 1

Okay, ich mache es vorwärts. Die meisten Fehler sind weg, aber ich habe jetzt nur wenige, zum Beispiel zuerst:

FEHLER in src / app / main / main.component.ts: 143: 63 - Fehler TS2322: Geben Sie 'string | ein undefined 'kann nicht dem Typ' string 'zugewiesen werden. Der Typ 'undefined' kann nicht dem Typ 'string' zugewiesen werden.

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

Code sieht so aus:

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));
    }
}
xavn-mpt
quelle
1
Ich würde dies lesen - github.com/microsoft/TypeScript/issues/33939 .
Sam
@ Sam Ich habe das gelesen und nichts hilft - leider
xavn-mpt
1
Verwenden Sie eine Version 9.0.0-beta.28von @ angle / flex-layout? Ich würde versuchen, auf die vorherige Version zurückzusetzen, bevor sie die TS-Version stoßen.
Sam
@Sam Ich habe in package.json auf eine ältere Version geändert und habe immer noch das gleiche Problem, nachdem ich node_modules, package-lock.json gelöscht und alles erneut installiert habe.
xavn-mpt
@ Sam in diesem Moment ist es 8.0.0-beta.27
xavn-mpt

Antworten:

16

Ich hatte das gleiche Problem und diese beiden Befehle haben mir das Leben gerettet. Mein zugrunde liegendes Problem ist, dass ich immer mit der globalen und lokalen Installation herumspiele. Möglicherweise haben Sie ein ähnliches Problem, und hoffentlich löst das Ausführen dieser Befehle auch Ihr Problem.

ng update --next @angular/cli --force
npm install typescript@latest
Leon Grinsen
quelle
Das hat bei mir gut funktioniert.
Dies ist der 18.
2
Das funktioniert bei mir. aber ich muss meine Typoskript-Version auf 3.6.x herabstufen. über 3.8.0 funktioniert nicht und wirft Fehler.
Hardik Patel
11

Einstellung "skipLibCheck": truein tsconfig.jsonmeinem Problem gelöst

"compilerOptions": {
    "skipLibCheck": true
}
VRK
quelle
1
Dies hat auch bei mir funktioniert und ich denke, es ist in Ordnung für einen POC oder ein Beispielprojekt, aber in einem anderen Thread werden die möglichen Nachteile im Allgemeinen erörtert
ewomack
Das ist Arbeit für mich, nach vielen Versuchen habe ich endlich mein metronisches Demo-Projekt gestartet. Vielen Dank!
JMSamudio
7

Ich habe das gleiche Problem beim Hinzufügen von @ angle / flex-layout zu meinem Angular 8-Projekt jetzt mit

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

Dieser Befehl hat seitdem die 9. Hauptversion des Flex-Layout-Pakets installiert. Anstatt alles andere auf die letzte Version zu aktualisieren, habe ich es gelöst, indem ich stattdessen die letzte 8. Hauptversion des Pakets installiert habe .

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

Sieht so aus, als hätten Sie kürzlich ein Flex-Layout-Paket installiert. Versuchen Sie, diesen Paketordner aus Ihrem Ordner node_modules zu entfernen und die vorherige Version dieses Pakets neu zu installieren.

Vor kurzem (2 Tage vor dem aktuellen Datum) veröffentlichte Angular die neueste Angular-Cli-Version (v9.0.1), aufgrund derer viele Pakete aktualisiert wurden, um diese neueste Cli-Version zu unterstützen. In Ihrem Fall haben Sie möglicherweise eine alte CLI-Version, und als Sie dieses Paket installiert haben, wurde es standardmäßig für die neueste CLI-Version heruntergeladen. Versuchen Sie also, Ihre Paketversion herunterzustufen. Arbeitete zumindest für mich.

Vergessen Sie auch nicht, die Version Ihres Pakets in der Datei package.json herunterzustufen

Hassan Raza
quelle
2

Versuchen

ng update @angular/core @angular/cli

Führen Sie dann zum Synchronisieren des Materials Folgendes aus:

ng update @angular/material
Mohammed Raja
quelle
2

In meinem Fall hat das Downgrade von @ angle / animations funktioniert. Wenn Sie es sich leisten können, führen Sie den Befehl aus

npm i @angular/animations@6.1.10

Oder verwenden Sie eine andere Version, die möglicherweise auf der Registerkarte "Versionen" für Sie funktioniert: https://www.npmjs.com/package/@angular/animations

Claudio Teles
quelle
2

Schnelle Lösung: Aktualisieren Sie package.json

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

In tsconfig.json

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

Entfernen Sie dann den Ordner node_modules und installieren Sie ihn erneut mit

npm installieren

Für mehr Besuch hier

Daniel R.
quelle
0

Dies ist eine kurze Antwort, die ich hoffentlich helfen kann

Versuchen Sie, die Agular- und Angular-CLI auf die Version 8 herunterzustufen. Ich denke, Ihr Problem ist ein Paketkompatibilitätsproblem

AbuDawood
quelle
0

Ich denke, dass Ihr Problem durch die Nichtübereinstimmung von Typoskript und Modulversion entstanden ist. Dieses Problem ist Ihrer Frage sehr ähnlich und die Antworten sind sehr zufriedenstellend.

Weißfang
quelle