TS1086: Một bộ truy cập không thể được khai báo trong bối cảnh môi trường xung quanh


13

Tôi có hàng ngàn lỗi này sau khi thực hiện lần đầu tiên khi gõ vào terminal ng phục vụ ứng dụng của tôi và tôi không thể giải quyết nó. Đây là lần đầu tiên đối với tôi khi tôi gặp vấn đề như thế này bên trong góc với lỗi bản in trông như thế này:

LRI trong ../../node_modules/@angular/flex-layout/core/typings/base/base2.d.ts:24:19 - lỗi TS1086: Một trình truy cập không thể được khai báo trong ngữ cảnh xung quanh.

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

- lỗi TS1086: Một bộ truy cập không thể được khai báo trong ngữ cảnh xung quanh.

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

- lỗi TS1086: Một bộ truy cập không thể được khai báo trong ngữ cảnh xung quanh.

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

- lỗi TS1086: Một bộ truy cập không thể được khai báo trong ngữ cảnh xung quanh.

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

- lỗi TS1086: Một bộ truy cập không thể được khai báo trong ngữ cảnh xung quanh. [...]

Có ai biết một lý do? Tôi không thể kiểm tra ứng dụng của mình cho đến khi tôi sửa nó.

Cập nhật 1

Được rồi, tôi làm cho nó về phía trước. Hầu hết các lỗi đã biến mất, nhưng bây giờ tôi có một vài lỗi, ví dụ đầu tiên là:

LRI trong src / app / main / main.component.ts: 143: 63 - lỗi TS2322: Nhập 'chuỗi | không xác định 'không thể gán cho kiểu' chuỗi '. Loại 'không xác định' không thể gán cho loại 'chuỗi'.

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

Mã trông như thế này:

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
Tôi sẽ đọc cái này - github.com/microsoft/TypeScript/issues/33939 .
Sam

@ Tôi đã đọc cái này và không có gì giúp được - thật đáng buồn
xavn-mpt

1
Bạn có đang sử dụng phiên bản 9.0.0-beta.28@ angular / flex-layout không? Tôi sẽ thử quay lại phiên bản trước trước khi họ đụng phiên bản TS.
Sam

@Sam tôi đã thay đổi trong gói.json thành phiên bản cũ hơn và vẫn còn vấn đề tương tự sau khi xóa node_modules, gói-lock.json và cài đặt lại mọi thứ.
xavn-mpt

@Sam tại thời điểm này nó 8.0.0-beta.27
xavn-mpt

Câu trả lời:


16

Tôi đã có cùng một vấn đề, và 2 lệnh này đã cứu mạng tôi. Vấn đề tiềm ẩn của tôi là tôi luôn gặp rắc rối với cài đặt toàn cầu và cài đặt cục bộ. Có thể bạn đang đối mặt với một vấn đề tương tự và hy vọng việc chạy các lệnh này cũng sẽ giải quyết vấn đề của bạn.

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

Điều này làm việc tốt cho tôi.
đây là

2
Điều này làm việc cho tôi. nhưng tôi phải hạ phiên bản bản thảo của mình xuống 3.6.x. trên 3.8.0 không hoạt động và ném lỗi.
Hardik Patel

11

Thiết "skipLibCheck": truetrong tsconfig.jsongiải quyết vấn đề của tôi

"compilerOptions": {
    "skipLibCheck": true
}

1
Điều này cũng làm việc cho tôi và tôi nghĩ rằng nó tốt cho một POC hoặc một dự án mẫu, nhưng thread khác thảo luận về những nhược điểm tiềm năng để làm điều này nói chung: stackoverflow.com/questions/52311779/...
ewomack

đây là công việc đối với tôi, sau nhiều nỗ lực cuối cùng tôi cũng đã bắt đầu dự án demo siêu kinh điển của mình. Cảm ơn!
JMSamudio

7

Tôi gặp vấn đề tương tự khi thêm @ angular / flex-layout vào dự án Angular 8 của tôi bây giờ với

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

Lệnh này đã cài đặt phiên bản thứ 9 chính của gói flex-layout. Thay vì nâng cấp mọi thứ khác lên phiên bản cuối cùng, tôi đã giải quyết nó bằng cách cài đặt phiên bản chính thứ 8 cuối cùng của gói thay thế.

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

2

Có vẻ như gần đây bạn đã cài đặt gói flex-layout. Hãy thử xóa thư mục gói này khỏi thư mục node_modules của bạn và cài đặt lại phiên bản trước của gói này.

Gần đây (2 ngày trước ngày hiện tại), angular đã phát hành phiên bản angular-cli mới nhất (v9.0.1) do có nhiều gói được cập nhật để hỗ trợ phiên bản cli mới nhất này. Trong trường hợp của bạn, bạn có thể có phiên bản cli cũ và khi bạn cài đặt gói này, nó đã được tải xuống cho phiên bản cli mới nhất theo mặc định. Vì vậy, hãy thử hạ cấp phiên bản gói của bạn. Làm việc cho tôi ít nhất.

Ngoài ra, đừng quên hạ cấp phiên bản của gói của bạn trong tệp pack.json


2

thử

ng update @angular/core @angular/cli

Sau đó, chỉ để đồng bộ hóa tài liệu, hãy chạy:

ng update @angular/material

2

Trong trường hợp của tôi, việc hạ cấp @ angular / animations hoạt động, nếu bạn có đủ khả năng để làm điều đó, hãy chạy lệnh

npm i @angular/animations@6.1.10

Hoặc sử dụng một phiên bản khác có thể phù hợp với bạn từ tab Phiên bản tại đây: https://www.npmjs.com/package/@angular/animations


2

Giải pháp nhanh: Cập nhật gói.json

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

Trong tsconfig.json

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

sau đó xóa thư mục node_modules và cài đặt lại với

cài đặt npm

Để xem thêm tại đây


0

đây là một câu trả lời ngắn gọn mà tôi hy vọng sẽ giúp được

Hãy thử hạ cấp Agular và Angular-CLI xuống v8, tôi nghĩ vấn đề của bạn là vấn đề tương thích gói


0

Tôi nghĩ rằng vấn đề của bạn đã xuất hiện từ phiên bản mô-đun và mô-đun không khớp. Vấn đề này rất giống với câu hỏi của bạn và câu trả lời rất thỏa mãn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.