TS1086: การเข้าถึงไม่สามารถประกาศในบริบทโดยรอบ


13

ฉันมีข้อผิดพลาดนี้นับพันหลังจากการใช้งานครั้งแรกและพิมพ์ใน terminal ng ให้บริการแอพของฉันและฉันไม่สามารถแก้ไขได้ นี่เป็นครั้งแรกสำหรับฉันเมื่อฉันมีปัญหาเช่นนี้ภายในเชิงมุมที่มีข้อผิดพลาด typescript ดูเหมือนว่า:

ข้อผิดพลาดใน ../../node_modules/@angular/flex-layout/core/typings/base/base2.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: Type 'string | ไม่ได้กำหนด 'ไม่สามารถกำหนดให้พิมพ์' สตริง ' พิมพ์ 'undefined' ไม่สามารถกำหนดให้พิมพ์ 'string'

143 this.fileService.add ({isFolder: true, ชื่อ: folder.name, parent: 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));
    }
}

1
ฉันจะอ่านหนังสือเล่มนี้ - github.com/microsoft/TypeScript/issues/33939
แซม

@ Sam ฉันอ่านและไม่มีอะไรช่วย - เศร้า
xavn-mpt

1
คุณใช้เวอร์ชัน9.0.0-beta.28ของ @ angular / flex-layout หรือไม่? ฉันจะลองย้อนกลับไปเป็นเวอร์ชันก่อนหน้าก่อนที่จะชนรุ่น TS
แซม

@ Sam ฉันเปลี่ยนเป็น package.json เป็นเวอร์ชันเก่ากว่าและสไตล์มีปัญหาเดียวกันหลังจากลบ node_modules, package-lock.json และติดตั้งทุกอย่างอีกครั้ง
xavn-mpt

@Sam ในเวลานี้มัน 8.0.0-beta.27
xavn-mpt

คำตอบ:


16

ฉันมีปัญหาเดียวกันนี้และคำสั่ง 2 คำนี้ช่วยชีวิตฉันไว้ ปัญหาพื้นฐานของฉันคือฉันมักจะสับสนกับการติดตั้งทั่วโลกและการติดตั้งในท้องถิ่น บางทีคุณอาจประสบปัญหาที่คล้ายกันและหวังว่าการรันคำสั่งเหล่านี้จะช่วยแก้ปัญหาของคุณได้เช่นกัน

ng update --next @angular/cli --force
npm install typescript@latest

มันใช้ได้ดีสำหรับฉัน
นี่คือ yash

2
ใช้งานได้สำหรับฉัน แต่ฉันต้องลดรุ่น typescript ของฉันเป็น 3.6.x มากกว่า 3.8.0 ไม่ทำงานและมีข้อผิดพลาดเกิดขึ้น
Hardik Patel

11

การตั้งค่า"skipLibCheck": trueในการtsconfig.jsonแก้ไขปัญหาของฉัน

"compilerOptions": {
    "skipLibCheck": true
}

1
นี้ยังทำงานสำหรับฉันและฉันคิดว่ามันเป็นที่ดีสำหรับ POC หรือโครงการตัวอย่าง แต่หัวข้ออื่นกล่าวถึงข้อเสียที่อาจเกิดขึ้นจากการทำเช่นนี้โดยทั่วไป: stackoverflow.com/questions/52311779/...
ewomack

นี่เป็นงานสำหรับฉันหลังจากพยายามมาหลายครั้งในที่สุดฉันก็เริ่มโครงการตัวอย่างของฉัน ขอบคุณ!
JMSamudio

7

ฉันได้รับปัญหาเดียวกันเมื่อเพิ่ม @ angular / flex-layout ในโครงการ Angular 8 ของฉันด้วย

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

นี้ตั้งแต่ตอนนี้คำสั่งที่ติดตั้งรุ่นที่สำคัญที่ 9 ของแพคเกจรูปแบบโค้ง แทนที่จะอัปเกรดทุกอย่างเป็นเวอร์ชั่นล่าสุดฉันแก้ไขได้โดยติดตั้งแพ็คเกจหลักรุ่นที่ 8 ล่าสุดแทน

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

2

ดูเหมือนว่าคุณเพิ่งติดตั้งแพ็กเกจ flex-layout ลองลบโฟลเดอร์แพ็กเกจนี้ออกจากโฟลเดอร์ node_modules ของคุณและติดตั้งแพ็กเกจเวอร์ชันก่อนหน้านี้อีกครั้ง

เมื่อเร็ว ๆ นี้ (2 วันก่อนวันที่ปัจจุบัน), angular เปิดตัวเวอร์ชันล่าสุดของ angular-cli (v9.0.1) เนื่องจากมีการอัปเดตแพคเกจจำนวนมากเพื่อรองรับ cli รุ่นล่าสุดนี้ ในกรณีของคุณคุณอาจมีรุ่น cli เก่าและเมื่อคุณติดตั้งแพคเกจนี้มันถูกดาวน์โหลดสำหรับรุ่น cli ล่าสุดโดยค่าเริ่มต้น ดังนั้นให้ลองลดรุ่นแพ็คเกจของคุณ ทำงานให้ฉันอย่างน้อยที่สุด

นอกจากนี้อย่าลืมที่จะดาวน์เกรดแพ็คเกจของคุณในไฟล์package.json



2

ในกรณีของฉันการลดระดับ @ angular / ภาพเคลื่อนไหวทำงานถ้าคุณสามารถทำได้ให้เรียกใช้คำสั่ง

npm i @angular/animations@6.1.10

หรือใช้เวอร์ชันอื่นที่อาจใช้งานได้กับคุณจากแท็บเวอร์ชันที่นี่: https://www.npmjs.com/package/@angular/animations


2

วิธีแก้ปัญหาอย่างรวดเร็ว: อัปเดตแพ็คเกจ.json

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

ใน tsconfig.json

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

จากนั้นลบโฟลเดอร์ node_modules และติดตั้งใหม่

ติดตั้ง NPM

สำหรับการเยี่ยมชมเพิ่มเติมได้ที่นี่


0

นี่เป็นคำตอบสั้น ๆ ที่ฉันหวังว่าจะช่วย

ลองปรับลดรุ่น Agular และ Angular-CLI เป็น v8 ฉันคิดว่าปัญหาของคุณคือปัญหาความเข้ากันได้ของแพ็คเกจ


0

ฉันคิดว่าปัญหาของคุณเกิดจาก typescript และ module version ไม่ตรงกัน ปัญหานี้คล้ายกับคำถามของคุณมากและคำตอบน่าพอใจมาก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.