未捕获的TypeError:googleAuth.then不是函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未捕获的TypeError:googleAuth.then不是函数相关的知识,希望对你有一定的参考价值。
我已经运行这个Angular 5应用程序一段时间使用Google身份验证,然后突然出现此错误(在prod和dev上)。登录成功,我收到一个GoogleAuth对象(我可以获取用户详细信息),但后来我收到此错误:
Uncaught TypeError: googleAuth.then is not a function
这是代码块。 _googleAuth是一种调用init的服务。
this._googleAuth.getAuth()
.subscribe(googleAuth => {
// TODO
console.log('user signedIn: ', googleAuth.isSignedIn.get()); // this returns true
const self = this;
googleAuth.then(function() { // error occurs here
if (googleAuth.isSignedIn.get()) {
...
}
...
我把这些打字更新为:
“@ types / gap”:“0.0.35”,“@ types / gapi.auth2”:“0.0.47”,
这是getAuth函数(似乎仍然有效):
public getAuth(): Observable<GoogleAuth> {
if (!this.GoogleAuth) {
return this.googleApi.onLoad().mergeMap(() => this.loadGapiAuth());
}
return Observable.of(this.GoogleAuth);
}
我检查了打字和GoogleAuth.then在那里定义。为什么我可以获得GoogleAuth对象但不能调用.then?
GoogleAuth.then的Google文档在这里:https://developers.google.com/identity/sign-in/web/reference#googleauththenoninit-onerror
我现在还不清楚为什么这会成为一个错误,但我找到了一个可能的解决方案。 TypeScript包装器服务已经在gapi.auth2.init之后调用。所以看起来我正在调用它两次。我删除了那张支票,它似乎正在运作。我仍然需要运行我的测试套件,但到目前为止看起来很有希望。
以上是关于未捕获的TypeError:googleAuth.then不是函数的主要内容,如果未能解决你的问题,请参考以下文章
Vue:未捕获(承诺中)TypeError:无法读取未定义的属性'_c'
Datepicker 返回未捕获的 typeError: undefined 'currentDay'
VueJS:未捕获(承诺中)TypeError:无法读取未定义的属性“推送”
未捕获的TypeError:(中间值).map不是函数[重复]