TS1086: Доступ не можна оголосити в умовах навколишнього середовища


13

У мене тисячі цієї помилки після первинної реалізації над введенням в термінал і служать моїм додатком, і я не можу його усунути. Для мене це перший раз, коли у мене є така проблема, як ця всередині кута з помилками typecript Помилки виглядає так:

ПОМИЛКА в ../../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: Тип 'рядок | undefined 'не призначається типу "рядок". Тип 'undefined' не призначається типу 'string'.

143 this.fileService.add ({isFolder: true, name: 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/isissue/33939 .
Сем

@Sam Я прочитав це, і нічого не допомагає - на жаль
xavn-mpt

1
Ви використовуєте версію 9.0.0-beta.28@ angular / flex-layout? Я б спробував відкотитись до попередньої версії, перш ніж вони натрапили на версію TS.
Сем

@Sam я змінив у package.json на старішу версію та stil, після видалення 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

Це добре працювало для мене.
це яш

2
це працює для мене. але мені доведеться зменшити версію мовника до 3.6.x. вище 3.8.0 не працює і видає помилку.
Hardik Patel

11

Установка "skipLibCheck": trueв tsconfig.jsonрозв'язуваних мої проблеми

"compilerOptions": {
    "skipLibCheck": true
}

1
Це також працює для мене , і я думаю , що це добре для РОС або зразок проекту, а інший потік обговорює потенційні мінуси робити це в загальному: stackoverflow.com/questions/52311779 / ...
ewomack

це робота для мене, після багатьох спроб я нарешті розпочав свій демонічний проект metronic. Дякую!
JMSamudio

7

У мене виникла та сама проблема, коли додаю @ angular / flex-layout до мого проекту Angular 8 зараз із

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

Це з цього часу команда встановила основну 9-ту версію пакету flex-layout. Замість того, щоб оновити все інше до останньої версії, я вирішив це, встановивши натомість останню 8-ту основну версію пакета .

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

2

Схоже, ви нещодавно встановили пакет з розкладкою. Спробуйте видалити папку цього пакета з папки node_modules та перевстановіть попередню версію цього пакета.

Нещодавно (за 2 дні до поточної дати) вийшла остання версія кутової останньої версії angular-cli (v9.0.1), завдяки якій оновлено багато пакетів для підтримки цієї останньої версії кліпу. У вашому випадку у вас може бути стара версія кліпу, і коли ви встановили цей пакет, він був завантажений для останньої версії cli за замовчуванням. Тому спробуйте зменшити версію пакету. Працював для мене щонайменше.

Також не забудьте зменшити версію пакету у файлі package.json


2

спробуйте

ng update @angular/core @angular/cli

Потім, просто щоб синхронізувати матеріал, запустіть:

ng update @angular/material

2

У моєму випадку пониження @ angular / анімації спрацювало, якщо ви можете дозволити це зробити, запустіть команду

npm i @angular/animations@6.1.10

Або скористайтеся іншою версією, яка може працювати для вас, на вкладці Версії тут: https://www.npmjs.com/package/@angular/animations


2

Швидке рішення: Оновіть package.json

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

В tsconfig.json

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

потім видаліть папку node_modules та перевстановіть за допомогою

npm встановити

Для більше відвідування тут


0

це коротка відповідь, яку я сподіваюся допомогти

Спробуйте знизити рівень кутових та CLI до версії 8, я думаю, що вашою проблемою є проблема сумісності пакетів


0

Я думаю, що ваша проблема виникла через невідповідність версії машинопису та модуля. Це питання дуже схоже на ваше запитання, і відповіді дуже задовольняють.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.