我一直使用Google身份验证运行此Angular 5应用程序,然后突然出现此错误(在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 / gapi”:“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
答案 0 :(得分:0)
我现在还不清楚为什么这会成为一个错误,但我找到了一个可能的解决方案。 TypeScript包装器服务已经在gapi.auth2.init之后调用。所以看起来我正在调用它两次。我已经删除了该支票,它似乎正在运作。我仍然需要运行我的测试套件,但到目前为止看起来很有希望。