programing

TS1086: 주변 컨텍스트에서 액세스자를 선언할 수 없음

easyjava 2023. 9. 16. 10:04
반응형

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를 삭제했지만 문제가 해결되지 않았습니다.그런 다음 다음 단계를 수행했습니다.

  1. 서버 종료
  2. 해당 파일을 복원했습니다.
  3. ng serve 명령 실행(이 시점에서 오류 해결)
  4. 서버 종료
  5. 이전에 오류가 발생했던 구성요소를 삭제하였습니다.
  6. 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

반응형