TS1086: un descriptor de acceso no se puede declarar en contexto ambiental

13

Tengo miles de este error después de la implementación inicial y escribir en el terminal ng serve my-app de y no puedo resolverlo. Esta es la primera vez para mí cuando tengo un problema como este dentro de angular con errores de mecanografía que se ve así:

ERROR en ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:24:19 - error TS1086: No se puede declarar un descriptor de acceso en un contexto ambiental.

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

- error TS1086: no se puede declarar un descriptor de acceso en un contexto ambiental.

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

- error TS1086: no se puede declarar un descriptor de acceso en un contexto ambiental.

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

- error TS1086: no se puede declarar un descriptor de acceso en un contexto ambiental.

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

- error TS1086: no se puede declarar un descriptor de acceso en un contexto ambiental. [...]

¿Alguien sabe alguna razón? No puedo probar mi aplicación hasta que la arregle.

Actualización 1

Bien, lo hago hacia adelante. La mayoría de los errores se han ido, pero ahora tengo algunos, por ejemplo, el primero de ellos:

ERROR en src / app / main / main.component.ts: 143: 63 - error TS2322: Escriba 'string | undefined 'no es asignable para escribir' string '. El tipo 'undefined' no es asignable para escribir 'string'.

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

El código se ve así:

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
fuente
@Sam Leí esto y nada ayuda, lamentablemente
xavn-mpt
1
¿Está utilizando la versión 9.0.0-beta.28de @ angular / flex-layout? Intentaría volver a la versión anterior antes de que se toparan con la versión TS.
Sam
@Sam cambié en package.json a una versión anterior y todavía tengo el mismo problema después de eliminar node_modules, package-lock.json e instalar todo de nuevo.
xavn-mpt
@Sam en este momento es 8.0.0-beta.27
xavn-mpt

Respuestas:

16

Tuve este mismo problema, y ​​estos 2 comandos me salvaron la vida. Mi problema subyacente es que siempre me estoy equivocando con la instalación global y la instalación local. Tal vez se enfrenta a un problema similar y, con suerte, ejecutar estos comandos también resolverá su problema.

ng update --next @angular/cli --force
npm install typescript@latest
Leon Grin
fuente
Esto funcionó bien para mi.
Esta es la paja
2
Esto funciona para mí. pero tengo que degradar mi versión mecanografiada a 3.6.x. 3.8.0 anterior no funciona y arroja un error.
Hardik Patel
12

Establecer "skipLibCheck": trueen tsconfig.jsonresuelto mi problema

"compilerOptions": {
    "skipLibCheck": true
}
VRK
fuente
1
Esto también funcionó para mí y creo que está bien para un POC o un proyecto de muestra, pero otro hilo discute las desventajas potenciales de hacer esto en general: stackoverflow.com/questions/52311779/…
ewomack
Esto es trabajo para mí, después de muchos intentos, finalmente comencé mi proyecto de demostración metrónica. ¡Gracias!
JMSamudio
7

Tuve el mismo problema al agregar @ angular / flex-layout a mi proyecto Angular 8 ahora con

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

Esto desde ahora ese comando instaló la novena versión principal del paquete de diseño flexible. En lugar de actualizar todo lo demás a la última versión, lo resolví instalando la última octava versión principal del paquete .

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

Parece que ha instalado recientemente el paquete de diseño flexible. Intente eliminar esta carpeta del paquete de su carpeta node_modules y reinstale la versión anterior de este paquete.

Recientemente (2 días antes de la fecha actual), angular lanzó la última versión angular-cli (v9.0.1) debido a que muchos paquetes se actualizan para admitir esta última versión cli. En su caso, es posible que tenga una versión antigua de cli y, cuando instaló este paquete, se descargó para la última versión de cli de forma predeterminada. Así que intente degradar la versión de su paquete. Al menos me funcionó.

Además, no olvide degradar la versión de su paquete en el archivo package.json

Hassan Raza
fuente
2

tratar

ng update @angular/core @angular/cli

Luego, solo para sincronizar material, ejecute:

ng update @angular/material
Mohammed Raja
fuente
2

En mi caso, degradar @ angular / animaciones funcionó, si puedes permitirte hacer eso, ejecuta el comando

npm i @angular/animations@6.1.10

O use otra versión que pueda funcionar para usted desde la pestaña Versiones aquí: https://www.npmjs.com/package/@angular/animations

Claudio Teles
fuente
2

Solución rápida: Actualizar package.json

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

En tsconfig.json

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

luego elimine la carpeta node_modules y vuelva a instalar con

npm install

Para más visita aquí

Daniel R.
fuente
0

esta es una breve respuesta que espero ayudar

Intente degradar la CLI Agular y Angular a la v8, creo que su problema es un problema de compatibilidad de paquetes

AbuDawood
fuente
0

Creo que su problema surgió de la falta de coincidencia de la versión del módulo y del mecanografiado. Este problema es muy similar a su pregunta y las respuestas son muy satisfactorias.

Colmillo Blanco
fuente