>我正在做一个项目,该项目允许用户拍摄列表的照片,然后程序将允许用户使用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.labels
在getText()
方法中未定义。
应在两个位置设置断点以分析问题:
- 在
this.labels = sub.responses[0].textAnnotations
线 - 在
this.labels.forEach
线
要检查的事项:
- 第一个断点
- 应在第二个断点之前命中。如果顺序相反,则当您尝试使用它时,您知道尚未设置
labels
属性。 - 在第一个断点中,检查
sub.responses[0]
以查看已获得的内容(textAnnotations
可能未定义(。