[英]TypeError: You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable
[英]TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable
我在基于 Angular 的 Ionic 中捕获错误时遇到问题。
我正在使用 create() 方法尝试创建新用户,如果用户名已经存在,我会从后端检索响应,但在我的方法错误中会在标题中抛出命名消息。 我已经尝试了大部分类似的答案,但仍然卡住
任何帮助
配置文件
import {HttpErrorResponse} from '@angular/common/http';
import {Observable, throwError} from 'rxjs';
export default class Config {
static handleError(error: HttpErrorResponse): Observable<any> {
console.log('*****handleErrors*****');
console.log(error); //TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
console.log(error.message); //TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
console.log(error.error.message);
return throwError(
error.error.message());
}
}
账户.service.ts
create(account: Account): Observable<Account> {
return this.httpClient
.post<ResponseWrapper>(this.accountsUrl, JSON.stringify(account), this.httpOptions).pipe(
map(rw => {
return rw.data;
}),
catchError(
this.handleError
)
);
}
handleError(error: Response | any) {
return Config.handleError(error);
}
account-detail.page.ts,我不想用我创建的 toastService 向太多代码发送垃圾邮件,但是 toastService 正在工作
this.accountService.create(this.selectedAccount).subscribe(
res => {
this.selectedAccount = res;
const io = new InteractionObject('save', 'account', this.selectedAccount);
this.accountDetailEvent.emit(io);
this.interactionService.setSave(io);
setTimeout(() => {
}, 500);
this.toastService.showSaveSuccessMsg();
},
error => { //TypeError: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
this.errorMsg = error;
if ('ACCOUNT_USERNAME_EXISTS' === this.errorMsg) {
this.toastService.showSaveFailMsg('account_username_exists');
}
}
);
如果找不到帐户,您的地图将无法返回帐户,如果请求正常,您将无法捕捉。
要修复它,您可以添加对响应的检查,如果没有找到帐户,则抛出异常
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.