TS1086: 주변 컨텍스트에서 액세스자를 선언할 수 없음
초기 구현 후에 수 천 개의 오류가 발생하고 단말기로 앱을 입력하면 해결할 수 없습니다.타이프스크립트로 각진 내부에서 이와 같은 문제가 발생한 경우 오류는 다음과 같습니다.
..../../node_modules/@angular/flex-layout/코어/타이핑/베이스/베이스/베이스2.d.ts:24:19 - 오류 TS1086: 주변 컨텍스트에서 액세스자를 선언할 수 없습니다.
24 protected get parentElement(): HTMLElement | null; ~~~~~~~~~~~~~ ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:26:19- 오류 TS1086: 주변 컨텍스트에서 액세스자를 선언할 수 없습니다.
26 protected get nativeElement(): HTMLElement; ~~~~~~~~~~~~~ ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:28:9- 오류 TS1086: 주변 컨텍스트에서 액세스자를 선언할 수 없습니다.
28 get activatedValue(): string; ~~~~~~~~~~~~~~ ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:29:9- 오류 TS1086: 주변 컨텍스트에서 액세스자를 선언할 수 없습니다.
29 set activatedValue(value: string); ~~~~~~~~~~~~~~ ../../node_modules/@angular/flex-layout/core/typings/breakpoints/break-point-registry.d.ts:20:9- 오류 TS1086: 주변 컨텍스트에서 액세스자를 선언할 수 없습니다.
[...]
이유를 아는 사람?제 앱을 고치기 전에는 테스트할 수 없습니다.
업데이트 1
좋아요, 앞으로 나갈게요.대부분의 오류는 사라졌지만, 지금은 오류가 거의 없습니다. 예를 들어 먼저 오류가 발생한 경우가 있습니다.
src/app/main/main.component.ts의 오류:143:63 - 오류 TS2322: 'string | undefined' 유형을 'string' 유형에 할당할 수 없습니다.'undefined' 형식은 'string' 형식에 할당할 수 없습니다.
143 이거.fileService.add({isFolder: true, 이름: folder.name , 부모: this.currentRoot ? this.currentRoot.id : 'root' });
코드는 다음과 같습니다.
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));
}
}
설정 "skipLibCheck": true인에tsconfig.json나의 문제를 해결했습니다.
"compilerOptions": {
"skipLibCheck": true
}
저도 같은 문제가 있었는데, 이 두 가지 명령이 제 목숨을 구했습니다.저의 근본적인 문제는 제가 항상 글로벌 설치와 로컬 설치를 망친다는 것입니다.아마도 비슷한 문제에 직면해 있을 것이고, 이러한 명령을 실행하면 문제도 해결될 것입니다.
ng update --next @angular/cli --force
npm install typescript@latest
이것을 야기하는 것이 단지 도서관이라면, 이것은 문제를 피할 수 있을 것입니다.타이프스크립트는 때때로 골칫거리가 될 수 있으므로 tsconfig.json 파일에 이 값을 설정합니다.
"compilerOptions": {
"skipLibCheck": true
}
지금 Angular 8 프로젝트에 @angular/flex-layout을 추가할 때 동일한 문제가 발생했습니다.
`npm install @angular/flex-layout --save`.
이후 명령어는 플렉스 레이아웃 패키지의 주요 9번째 버전을 설치했습니다.마지막 버전으로 다른 모든 것을 업그레이드하는 대신 마지막 8번째 메이저 버전의 패키지를 설치하는 것으로 해결했습니다.
npm install @angular/flex-layout@8.0.0-beta.27 --save
빠른 해결책:패키지 업데이트.json
"devDependencies": {
...
"typescript": "~3.7.4",
}
intsconfig.json
{
...,
"angularCompilerOptions": {
...,
"disableTypeScriptVersionCheck": true
}
}
그런 다음 node_design 폴더를 제거하고 다음을 사용하여 다시 설치합니다.
npm설치
자세한 내용은 여기를 참조하십시오.
제 경우에는 두 라이브러리 버전이 일치하지 않습니다.
angular 7.0.0을 사용하고 있으며 설치되어 있습니다.
"@swimlane/ngx-dnd": "^8.0.0"
그리고 이것이 문제를 일으켰습니다.이 라이브러리를 되돌리는 중
"@swimlane/ngx-dnd": "6.0.0"
나를 위해 일했습니다.
최근에 플렉스 레이아웃 패키지를 설치하신 것 같습니다.node_modules 폴더에서 이 패키지 폴더를 제거하고 이 패키지의 이전 버전을 다시 설치해 보십시오.
최근(현재 날짜 2일 전) 각도 릴리스된 최신 각도 cli 버전(v9.0.1)으로 인해 이 최신 cli 버전을 지원하기 위해 많은 패키지가 업데이트되었습니다.사용자의 경우 이전 cli 버전이 있을 수 있으며 이 패키지를 설치할 때 기본적으로 최신 cli 버전용으로 다운로드되었습니다.따라서 패키지 버전을 다운그레이드해 보십시오.적어도 저한테는 통했어요.
패키지의 버전을 다운그레이드 하는 것도 잊지 마세요.json 파일
해라
ng update @angular/core @angular/cli
그런 다음 재료를 동기화하려면 다음을 실행합니다.
ng update @angular/material
내 경우 @angular/animations 다운그레이드가 가능했습니다. 그럴 여유가 있다면 명령을 실행하십시오.
npm i @angular/animations@6.1.10
또는 버전 탭에서 사용할 수 있는 다른 버전을 사용하십시오. https://www.npmjs.com/package/ @http/animations
나는 당신의 문제가 타이프스크립트와 모듈 버전의 불일치에서 비롯되었다고 생각합니다.이 문제는 당신의 질문과 매우 비슷하고 답변도 매우 만족스럽습니다.
저는 새로운 프로젝트를 진행하던 중에 비슷한 유형의 문제가 생겼습니다.그냥 달렸어요.ng update --all내 문제는 해결됐습니다.
업데이트했습니다.typescript그리고.tslint버전과 사용하지 않는 패키지를 제거했습니다.이것으로 문제가 해결되었습니다.
다른 사람들이 여기서 지적한 것처럼, 이것은 몇몇 라이브러리에서 생성된 타이핑이 당신의 타이핑 스크립트 버전과 호환되지 않는 다른 타이핑 버전의 문제인 것 같습니다.
서버가 켜져 있는 동안(ng serve 명령 실행 후) 여러 구성 요소를 삭제할 때 이 오류가 발생했습니다.Route component 및 module에서 reference를 삭제했지만 문제가 해결되지 않았습니다.그런 다음 다음 단계를 수행했습니다.
- 서버 종료
- 해당 파일을 복원했습니다.
- ng serve 명령 실행(이 시점에서 오류 해결)
- 서버 종료
- 이전에 오류가 발생했던 구성요소를 삭제하였습니다.
- ng serve 명령 실행(이 시점에서도 오류 없음)
이온 저장 장치에서 이러한 문제가 발생하는 경우 다음을 사용해 보십시오.
npm i @ionic/storage@2.2.0
이 문제를 극복하는 가장 좋은 방법은 node_modules와 package-lock.json 파일을 제거하고 npm으로 npm을 추가 설치하면 문제가 해결됩니다.
언급URL : https://stackoverflow.com/questions/60092642/ts1086-an-accessor-cannot-be-declared-in-ambient-context
'programing' 카테고리의 다른 글
| nvm: N/A: 버전 "N/A -> N/A"가 아직 설치되지 않았습니다. (0) | 2023.09.16 |
|---|---|
| 정의되지 않은 함수 oci_connect() 호출 (0) | 2023.09.16 |
| 아이폰에서 쓸 수 있는 경로를 얻으려면 어떻게 해야 합니까? (0) | 2023.09.16 |
| CSS에서 "보다 크다" 또는 ">" 문자는 어떻게 사용됩니까? (0) | 2023.09.16 |
| Powershell에서 사용자 이름/암호를 사용하여 네트워크 폴더에 연결 (0) | 2023.09.16 |