Сбой сборки Ioni c 4 (не конденсатор) с ошибкой @ firebase / logger [TS1068: метод доступа не может быть объявлен в окружающем контексте] - PullRequest
1 голос
/ 28 марта 2020

Ioni c сборка завершается ошибкой после добавления firebase и @angular/fire в мой проект. Я использовал firebase и angularFire целую вечность, но внезапно эта проблема возникла при сборке.

Кажется, что с проблемой, связанной с файлом logger.d.ts, однако я даже не использую Logger Firebase. Должен быть какой-то внутренний звонок, он искал в Интернете в течение нескольких часов, но не мог найти ответ, надеюсь, кто-то мог столкнуться с этой проблемой раньше? может пролить свет?

ниже приведено изображение сообщения об ошибке

enter image description here

> ng run app:build

ERROR in node_modules/@firebase/logger/dist/src/logger.d.ts:70:9 - error TS1086: An accessor cannot be declared in an ambient context.

70     get logLevel(): LogLevel;
           ~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:71:9 - error TS1086: An accessor cannot be declared in an ambient context.

71     set logLevel(val: LogLevel);
           ~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:77:9 - error TS1086: An accessor cannot be declared in an ambient context.

77     get logHandler(): LogHandler;
           ~~~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:78:9 - error TS1086: An accessor cannot be declared in an ambient context.

78     set logHandler(val: LogHandler);
           ~~~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:83:9 - error TS1086: An accessor cannot be declared in an ambient context.

83     get userLogHandler(): LogHandler | null;
           ~~~~~~~~~~~~~~
node_modules/@firebase/logger/dist/src/logger.d.ts:84:9 - error TS1086: An accessor cannot be declared in an ambient context.

84     set userLogHandler(val: LogHandler | null);
           ~~~~~~~~~~~~~~

[ERROR] An error occurred while running subprocess ng.

        ng run app:build exited with exit code 1.

        Re-running this command with the --verbose flag may provide more information.

Моя посылка. json выглядит как следующий

"dependencies": {
    "@angular/common": "~8.2.14",
    "@angular/core": "~8.2.14",
    "@angular/fire": "^5.4.2",
    "@angular/forms": "~8.2.14",
    "@angular/platform-browser": "~8.2.14",
    "@angular/platform-browser-dynamic": "~8.2.14",
    "@angular/router": "~8.2.14",
    "@ionic-native/core": "^5.0.0",
    "@ionic-native/device": "^5.23.0",
    "@ionic-native/http": "^5.23.0",
    "@ionic-native/splash-screen": "^5.0.0",
    "@ionic-native/status-bar": "^5.0.0",
    "@ionic/angular": "^5.0.0",
    "cordova-android": "8.1.0",
    "cordova-ios": "5.1.1",
    "cordova-plugin-advanced-http": "^2.4.1",
    "cordova-plugin-file": "^6.0.2",
    "core-js": "^2.5.4",
    "firebase": "^7.13.1",
    "lodash": "^4.17.15",
    "rxjs": "~6.5.1",
    "tslib": "^1.9.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~0.803.20",
    "@angular/cli": "~8.3.23",
    "@angular/compiler": "~8.2.14",
    "@angular/compiler-cli": "~8.2.14",
    "@angular/language-service": "~8.2.14",
    "@ionic/angular-toolkit": "^2.1.1",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/lodash": "^4.14.149",
    "@types/node": "~8.9.4",
    "codelyzer": "^5.0.0",
    "cordova-plugin-device": "^2.0.2",
    "cordova-plugin-ionic-keyboard": "^2.2.0",
    "cordova-plugin-ionic-webview": "^4.1.3",
    "cordova-plugin-splashscreen": "^5.0.2",
    "cordova-plugin-statusbar": "^2.4.2",
    "cordova-plugin-whitelist": "^1.3.3",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",
    "npm-force-resolutions": "0.0.3",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.4.3"
  },

Пожалуйста, помогите, если кто-то может.

Ответы [ 3 ]

3 голосов
/ 28 марта 2020

Решение 1

Вам необходимо использовать TypeScript 3.7.
Из TypeScript 3.7 заметки о выпуске :

Чтобы обнаружить проблему с аксессорами, TypeScript 3.7 теперь будет генерировать средства доступа get / set в файлах .d.ts, чтобы в TypeScript можно было проверять наличие переопределенных средств доступа.

Так что вам придется либо обновить до TypeScript 3.7, либо использовать более раннюю версию Firebase.

Решение 2

Установите skipLibCheck на true в вашем tsconfig.json.

"compilerOptions": {
  "skipLibCheck": true,
  ...
}
1 голос
/ 28 марта 2020

Я также получаю это при попытке обновить пакет Firebase с версии 7.11.0 и выше. Попробуйте исправить версию firebase до 7.11.0.

Что касается настоящего долгосрочного решения, мне также интересно.

0 голосов
/ 03 апреля 2020

У меня была проблема с Ioni c 4, я понизил Firebase до 7.10.

Не могу использовать Typescript> 3.6 с Angular 8 или повышает ERROR in The Angular Compiler requires TypeScript >=3.4.0 and <3.6.0 but 3.8.3 was found instead.

Я не пытался переключить skipLibCheck опцию компилятора, не похоже на долгосрочное решение.

Кстати, спасибо всем за ветку, спаси мой день; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...