类型错误: 无法读取未定义的属性'forEach'



>我正在做一个项目,该项目允许用户拍摄列表的照片,然后程序将允许用户使用cropperjs裁剪图像,然后将裁剪的图像传递给visionAPI,在那里它将提取图像的文本。但是现在我面临这个 2 错误

异常:无法读取未定义的属性"forEach">

类型错误:无法读取未定义的属性"forEach">

编译器给出的提示之一是

at CameraPage.getText (main.js:82525(

我不确定这里出了什么问题

以下是代码:

相机.ts

export class CameraPage {
  public image:string;
  width:number = 500;
  height:number = 500;
  quality:number = 90;
  labels: Array<any> = [];
  constructor(
    public navCtrl: NavController, 
    public navParams: NavParams,
    public testService: TestService, 
    public cameraService: CameraService,
    public toastCtrl: ToastController
  ) {}
  addPhoto(){
    this.cameraService.getImage(this.width,this.height,this.quality)
      .subscribe( (data) => {
          this.image = (data);
          //console.log(btoa(this.image));
          this.getVision(btoa(this.image));
        //console.log(this.image);
        },(error) => {
          // Toast errot and return DEFAULT_PHOTO from Constants
          this.toast(error);
        }
      );
  }
  toast(message: string) {
    let toast = this.toastCtrl.create({
      message: message,
      duration: 2500,
      showCloseButton: false
    });
    toast.present();
  }

  getVision(image64: string) {
    this.testService.getVisionLabels(image64).subscribe((sub) => {    
      this.labels = sub.responses[0].textAnnotations;    
      this.getText();
    }); 
  }
  getText() {
    this.labels.forEach((label) => {
      let translation = {search: label.description, result: ''};
      console.log(label.description);
    });    
  }   
}

相机.html

<ion-header>
  <ion-navbar>
    <ion-title>
      Camera
    </ion-title>
  </ion-navbar>
</ion-header>
<ion-content>
  <img src={{image}} *ngIf="image" />
  <ion-card-content>

    <button ion-button block outline (click)="addPhoto()">Take A Picture</button>
    <div class="results">
      <div *ngFor="let label of labels">
      <h2>{{label.description}}</h2>
      </div>
    </div>
  </ion-card-content>
</ion-content>

错误的意思是this.labelsgetText()方法中未定义。

应在两个位置设置断点以分析问题:

  1. this.labels = sub.responses[0].textAnnotations线
  2. this.labels.forEach线

要检查的事项:

    第一个断点
  • 应在第二个断点之前命中。如果顺序相反,则当您尝试使用它时,您知道尚未设置labels属性。
  • 在第一个断点中,检查sub.responses[0]以查看已获得的内容(textAnnotations可能未定义(。

相关内容

  • 没有找到相关文章