如何解决Firebase 5.9.0的TypeScript编译错误
我正在增强使用Firebase的Ionic-Angular 3.9.2 PWA应用程序。我正在尝试将Apple Signin作为功能添加到此应用程序中。我正在遵循此处记录的集成方法:https://firebase.google.com/docs/auth/web/apple。 我的项目也使用AngularFire2。
为了支持Apple签名,我将Firebase Web SDK从4.8.0升级到了5.9.0,并将AngularFire2从5.0.0-rc.4升级到了5.0.0-rc.6。
尝试运行项目(使用离子服务)时,出现以下Typescript错误
typescript: src/providers/authenticata/authenticata.ts,line: 266
Expected 0 arguments,but got 1.
L265: return new Promise((resolve,reject) => {
L266: var provider = new firebase.auth.OAuthProvider("apple.com");
当我检查OAuthProvider的定义时,我确实看到它具有一个名为providerId的属性,该属性是必需的。
class OAuthProvider implements firebase.auth.AuthProvider { providerId: string; /** * @param {string} scope Provider OAuth scope to add. */ addScope(scope: string): firebase.auth.AuthProvider;
顺便说一句,我注意到如果忽略此错误,请在文件中添加注释并保存以再次编译并重新加载应用程序,它可以正常工作而不会引发错误。
在尝试进行构建以进行部署时,Angular AOT编译器再次引发了此问题。
[15:11:16] typescript: src/providers/authenticata/authenticata.ts,reject) => {
L266: var provider = new firebase.auth.OAuthProvider("apple.com");
Error: The Angular AoT build Failed. See the issues above.
这是我的package.json
{
"name": "myapp","version": "0.0.1","author": "Ionic Framework","homepage": "http://ionicframework.com/","private": true,"scripts": {
"clean": "ionic-app-scripts clean","build": "ionic-app-scripts build","lint": "ionic-app-scripts lint","ionic:build": "ionic-app-scripts build","ionic:serve": "ionic-app-scripts serve","pwa": "ionic-app-scripts build --prod --platform browser && gulp build-sw","browser": "ionic-app-scripts serve --sourceMap source-map --iscordovaserve --wwwDir platforms/browser/www/ --buildDir platforms/browser/www/build"
},"dependencies": {
"@agm/core": "1.0.0-beta.2","@angular/common": "5.0.3","@angular/compiler": "5.0.3","@angular/compiler-cli": "5.0.3","@angular/core": "5.0.3","@angular/forms": "5.0.3","@angular/http": "5.0.3","@angular/platform-browser": "5.0.3","@angular/platform-browser-dynamic": "5.0.3","@ionic-native/core": "4.4.0","@ionic-native/date-picker": "4.5.2","@ionic-native/firebase": "4.5.3","@ionic-native/splash-screen": "4.4.0","@ionic-native/status-bar": "4.20.0","@ionic/storage": "2.1.3","@types/intro.js": "2.4.5","@types/moment": "2.13.0","@types/underscore": "1.8.7","angularfire2": "^5.0.0-rc.6","clipboard": "2.0.1","cordova-ios": "5.0.0","device": "0.3.9","es6-promise-plugin": "4.2.2","firebase": "^5.9.0","ics": "2.13.1","ics-js": "0.10.2","immutable-ics": "0.4.0","ionic-angular": "3.9.9","ionic-img-viewer": "2.9.0","ionic-plugin-deeplinks": "1.0.20","ionic-plugin-keyboard": "2.2.1","ionic2-auto-complete": "1.6.2-alpha","ionicons": "3.0.0","moment": "2.20.1","ng-lottie": "0.3.2","node-sass": "4.6.0","promise-polyfill": "7.0.2","rxjs": "5.5.2","underscore": "1.8.3","workBox-sw": "3.1.0","ws": "3.3.2","xcode": "2.0.0","zone.js": "0.8.18"
},"devDependencies": {
"@ionic/app-scripts": "3.2.3","@types/googlemaps": "3.36.5","typescript": "2.4.2","workBox-build": "4.3.1"
},"description": "An Ionic project","config": {
"ionic_copy": "./config/copy.config.js"
},"cordova": {
"plugins": {
"cordova-plugin-datepicker": {},"cordova-plugin-device": {}
},"platforms": [
"browser"
]
}
}
我的代码如下
import { AngularFireDatabase } from "angularfire2/database";
import * as firebase from "firebase/app";
..
..
async signInWithApple() {
return new Promise((resolve,reject) => {
var provider = new firebase.auth.OAuthProvider("apple.com");
firebase
.auth()
.signInWithPopup(provider)
.then((result) => {
// I handle the firebase auth and other logic here
})
...
我的环境和CLI版本如下:
username$ ionic info
cli packages: (/Users/gofloaters/.nvm/versions/node/v8.13.0/lib/node_modules)
@ionic/cli-utils : 1.9.2
ionic (Ionic CLI) : 3.9.2
global packages:
Cordova CLI : 8.1.2 (cordova-lib@8.1.1)
local packages:
@ionic/app-scripts : 3.2.3
Cordova Platforms : android 8.1.0 browser 6.0.0 ios 5.0.0
Ionic Framework : ionic-angular 3.9.9
System:
Android SDK Tools : 26.1.1
ios-deploy : 1.9.4
Node : v8.13.0
npm : 6.4.1
OS : macOS
Xcode : Xcode 11.2.1 Build version 11B500
请帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。