Ошибка Uncaught TypeError: не удается прочитать свойство ‘id’ undefined при создании программы для загрузки изображения в firebase

#angular #typescript #firebase #ionic-framework #angularfire2

#angular #typescript #firebase #ionic-framework #angularfire2

Вопрос:

Я создаю простую программу для загрузки изображений и файлов в firebase cloud. Я все еще новичок в веб-приложениях, поэтому я не понимаю, чем вызвана ошибка. При сохранении ошибок в коде нет. Однако, когда я его компилирую, страница не загружается и выдает мне одну ошибку в консоли:

core.js:24134 Ошибка Uncaught TypeError: не удается прочитать свойство ‘id’ undefined

в registerNgModuleType (core.js:24134)

в core.js: 24145

в Array.forEach ()

в registerNgModuleType (core.js:24145)

в новом NgModuleFactory $ 1 (core.js:24242)

в compileNgModuleFactory__POST_R3__ (core.js: 27786)

в PlatformRef.bootstrapModule (core.js:28024)

в модуле../src/main.ts (main.ts:11)

в webpack_require (bootstrap:84)

в Object.0 (main.ts:12)

Я не силен в отладке этого материала, поэтому приветствуется любая помощь.

 
    //HTML: 
    
    <div class="choose_file">
         <span><ion-icon name="cloud-upload-outline"></ion-icon>Upload</span>
         <input name="Select File" type="file" (change)='uploadFile($event)'/>
    </div>
    
    //Typescript:
    
    import { Component } from '@angular/core';
    import { AngularFireStorage } from '@angular/fire/storage';
    
    @Component({
      selector: 'app-tab1',
      templateUrl: 'tab1.page.html',
      styleUrls: ['tab1.page.scss']
    })
    export class Tab1Page {
    
      constructor( private storage: AngularFireStorage) {}
    
        uploadFile(event) {
          const file = event.target.files[0];
          var filePath = "test-image";
    
          const fileRef = this.storage.ref(filePath);
          var task = fileRef.put(file);
        }
      }
    
    //App Routing Module TS:
    
    import { NgModule } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    import { environment } from 'src/environments/environment';
    import { RouteReuseStrategy } from '@angular/router';
    
    import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
    import { SplashScreen } from '@ionic-native/splash-screen/ngx';
    import { StatusBar } from '@ionic-native/status-bar/ngx';
    
    import { AppRoutingModule } from './app-routing.module';
    import { AppComponent } from './app.component';
    
    import { AngularFireModule } from '@angular/fire';
    import { AngularFireAuthModule } from '@angular/fire/auth';
    import { AngularFirestoreModule } from '@angular/fire/firestore';
    import { AngularFireStorage } from '@angular/fire/storage';
    import {HttpClientModule} from "@angular/common/http";
    
    @NgModule({
      declarations: [AppComponent],
      entryComponents: [],
      imports: [BrowserModule, IonicModule.forRoot(), AppRoutingModule, AngularFireModule.initializeApp(environment.firebaseConfig),
        AngularFireAuthModule,
        AngularFirestoreModule,
        HttpClientModule,
        AngularFireStorage
      ],
      providers: [
        StatusBar,
        SplashScreen,
        { provide: RouteReuseStrategy, useClass: IonicRouteStrategy },],
      bootstrap: [AppComponent]
    })
    export class AppModule {}

  

Комментарии:

1. Ничто в этом коде не пытается получить доступ к свойству ‘id’ чего-либо. Есть ли еще код, который вы можете нам показать? Эта ошибка будет связана с тем, что пытается получить доступ к чему-либо [‘id’] или something.id так что ищите место, где это происходит в вашем коде.

2. Отладка имеет решающее значение для программирования! Вам нужно посмотреть, сможете ли вы получить эту ошибку в своей среде разработки после запуска ionic serve , чтобы ваши исходные карты typescript указали вам правильную строку кода, выдающую ошибку. Предоставленный вами код не показывает нам ничего полезного.

3. @Steve Я использую идентификатор приложения firebase, может ли это иметь какое-либо отношение к этому?

4. Возможно. Лучший совет, который я могу вам дать, это то, что вам нужно искать массив, который вы просматриваете. В этом массиве вы получаете доступ к идентификатору чего-то, что не определено. Без соответствующего кода я больше ничего не могу сделать.