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

25

Estoy aprendiendo Material angular y obtengo este error al importar {MatButtonModule} desde "@ angular / material / button".

Por lo que leí en otras respuestas, parece que hay problemas de compatibilidad de paquetes, pero no pude solucionarlo.

Aquí está el error completo

ERROR in node_modules/@angular/cdk/a11y/focus-trap/focus-trap.d.ts(29,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/focus-trap/focus-trap.d.ts(30,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/focus-trap/focus-trap.d.ts(128,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/focus-trap/focus-trap.d.ts(129,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/focus-trap/focus-trap.d.ts(134,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/focus-trap/focus-trap.d.ts(135,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/key-manager/list-key-manager.d.ts(96,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/key-manager/list-key-manager.d.ts(98,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/live-announcer/live-announcer.d.ts(69,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/a11y/live-announcer/live-announcer.d.ts(70,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/observers/observe-content.d.ts(62,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/observers/observe-content.d.ts(63,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/observers/observe-content.d.ts(66,9): error TS1086: An accessor cannot be declared in an ambient context.
    node_modules/@angular/cdk/observers/observe-content.d.ts(67,9): error TS1086: An accessor cannot be declared in an ambient context.

Aquí está mi paquete.json

"name": "football",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "~8.2.14",
    "@angular/cdk": "^9.0.0",
    "@angular/common": "~8.2.14",
    "@angular/compiler": "~8.2.14",
    "@angular/core": "~8.2.14",
    "@angular/forms": "~8.2.14",
    "@angular/material": "8.2.3",
    "@angular/platform-browser": "~8.2.14",
    "@angular/platform-browser-dynamic": "~8.2.14",
    "@angular/router": "~8.2.14",
    "hammerjs": "^2.0.8",
    "rxjs": "~6.4.0",
    "tslib": "^1.10.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.803.21",
    "@angular/cli": "~8.3.21",
    "@angular/compiler-cli": "~8.2.14",
    "@angular/language-service": "~8.2.14",
    "@types/node": "~8.9.4",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "codelyzer": "^5.0.0",
    "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",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.5.3"
  }
}
Pablo Aguirre de Souza
fuente

Respuestas:

41

De acuerdo con su package.json, está utilizando Angular 8.3, pero ha importado angular / cdk v9. Puede degradar su versión angular / cdk o puede actualizar su versión angular a v9 ejecutando:

ng update @angular/core @angular/cli

Eso actualizará su versión angular local a 9. Luego, solo para sincronizar material, ejecute: ng update @angular/material

Kyler Johnson
fuente
Gracias, encontré este problema cuando instalé angular flex que instaló automáticamente la última versión (versión 9 en mi caso) pero estaba trabajando con angular 8. La corrección de la versión resolvió el problema
A_J
@Kyler johnson, ¿cómo puedo bajar angular / cdk
mdkamrul
1
@mdkamrul puede degradar ejecutando npm i @angular/core@8 @angular/cli@8 @angular/material@8, suponiendo que estaba en la versión 8. A veces, su package.json y package-lock.json no estarán sincronizados y su proyecto usará lo que está dentro del archivo package-lock.json. Así que ahora, corre npm ipara sincronizarlos. Si aún tiene problemas después de eso, ejecute npm cipara hacer una instalación completamente limpia de sus dependencias
Kyler Johnson
Tuve que usar ng update @angular/cli @angular/core --force, porque los paquetes en sí son incompatibles y no se puede cambiar de otra manera.
prueba el
0

Primero, compruebe en el module.tsarchivo que @NgModuletodas las propiedades son solo una vez. Si alguno de ellos es más de una vez, entonces también aparece este error. Debido a que también había ocurrido este error, pero en module.tsla entryComponentspropiedad del archivo fueron dos veces, es por eso que recibí este error. Resolví este error eliminando una vez entryComponentsde @NgModule. Por lo tanto, le recomiendo que primero lo verifique correctamente.

Rohit Tagadiya
fuente