Ionic 3 «Обнаружен неопределенный провайдер! Обычно это означает, что у вас есть циклические зависимости», которые могут быть вызваны использованием файлов index.ts «barrel»

Вот несколько бесполезная ошибка, которую я получаю в своем приложении Angular/TypeScript. Пока кто-нибудь не улучшит сообщение об ошибке, что мы можем с этим поделать? Каковы наиболее вероятные ситуации, которые вызывают это? Вот мой файл app.module.js и файлы home.ts.

Когда я удаляю файл и плагин для открытия файлов, он не получает ошибку. Если я включу этот плагин в home.ts, он покажет ошибку. Каковы наиболее вероятные ситуации, которые вызывают это?

app.module.ts:

import { BrowserModule } from '@angular/platform-browser';
import { ErrorHandler, NgModule } from '@angular/core';
import { IonicApp, IonicErrorHandler, IonicModule } from 'ionic-angular';
import { SplashScreen } from '@ionic-native/splash-screen';
import { StatusBar } from '@ionic-native/status-bar';
import { MyApp } from './app.component';
import { HomePage } from '../pages/home/home';
import {  FileOriginal } from '@ionic-native/file';
import { FileOpenerOriginal } from '@ionic-native/file-opener';
        @NgModule({
          declarations: [
            MyApp,
            HomePage
          ],
          imports: [
            BrowserModule,
            IonicModule.forRoot(MyApp)
          ],
          bootstrap: [IonicApp],
          entryComponents: [
            MyApp,
            HomePage
          ],
          providers: [
            StatusBar,
            SplashScreen,
            {provide: ErrorHandler, useClass: IonicErrorHandler},
            FileOriginal,
            FileOpenerOriginal
          ]
        })
        export class AppModule {}

дом.тс

import {  FileOriginal } from '@ionic-native/file';
import {  FileOpenerOriginal } from '@ionic-native/file-opener'

    constructor(public navCtrl: NavController,private plt: Platform, private file: FileOriginal, private fileOpener: FileOpenerOriginal) {
          }

Я получил такую ​​​​ошибку:

Uncaught Error: Encountered undefined provider! 
Usually this means you have a circular dependencies (might be caused by using 'barrel' index.ts files.)
      at syntaxError (compiler.js:486)  
      at compiler.js:15767  
      at Array.forEach (<anonymous>)  
      at CompileMetadataResolver._getProvidersMetadata (compiler.js:15752)  
      at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15320)  
      at JitCompiler._loadModules (compiler.js:34413)  
      at JitCompiler._compileModuleAndComponents (compiler.js:34374)  

вы пробовали это решение stackoverflow.com/questions/43008395/…

TheParam 04.04.2019 12:33

спасибо, братан, моя ошибка возникает в плагине для открытия файлов и файлов... в этом решении ошибка возникает в модуле

hi hi 04.04.2019 12:35

Что такое FileOriginal? ionicframework.com/docs/v3/native/файл

Suraj Rao 04.04.2019 12:41

я устанавливаю этот плагин ionic cordova plugin add cordova-plugin-file . я объявляю имя провайдера как файл. он показывает ошибку и рекомендует добавить fileOriginal

hi hi 04.04.2019 12:44
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
4
1 304
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно использовать File, а не FileOriginal. В моем проекте я объявляю файл как провайдер, и он работает. Вы правильно его установили?
Когда вы используете эту команду ionic cordova plugin add cordova-plugin-file, у вас есть какие-либо предупреждения о зависимостях?
Возможно, версия плагина несовместима с ionic 3.

РЕДАКТИРОВАТЬ

Команда:

ionic cordova plugin add cordova-plugin-file
npm install @ionic-native/[email protected]

когда я использую класс файла (псевдоним) FileOpenerOriginal import FileOpenerOriginal @name — File Opener @description — этот плагин откроет файл в файловой системе вашего устройства с помощью приложения по умолчанию. @usage * import { FileOpener } from '@ionic-native/file-opener/ngx'; * * конструктор (приватный fileOpener: FileOpener) { } * * ...`

hi hi 04.04.2019 13:45

Как я уже сказал, вы установили его правильно? Вы используете команду 2? В моем package.json у меня есть это для ionic 3: "@ionic-native/file": "^4.20.0" и это: `"cordova-plugin-file": "6.0.1",`

Sam 04.04.2019 13:47

я добавил <plugin name = "cordova-plugin-file" spec = "6.0.1" /> <plugin name = "cordova-plugin-file-opener2" spec = "2.2.0">

hi hi 04.04.2019 13:49

Но можете ли вы сказать мне, какая версия у вас есть в вашем пакете json?

Sam 04.04.2019 13:51
> cordova plugin add [email protected] --save Installing "cordova-plugin-file" for android Installing "cordova-plugin-compat" for android Plugin doesn't support this project's cordova-android version. cordova-android: 7.1.4, failed version requirement: <6.3.0 Skipping 'cordova-plugin-compat' for android
hi hi 04.04.2019 13:56

Я думаю, вам нужно удалить plugin-compat , Cordova-plugin-compat теперь включен в Cordova-Android 6.3.0, нет необходимости снова добавлять плагин. Я редактирую свой ответ, попробуйте выполнить команду, которую я вам даю ^^, и не забудьте добавить удалить платформу, иногда это просто ошибка.

Sam 04.04.2019 14:09

Другие вопросы по теме