Firebase / Recaptcha / Ionic / Angular - Невозможно назначить только для чтения свойство 'taskData' объекта '[object Object]' - PullRequest
0 голосов
/ 11 декабря 2018

У меня есть приложение Ionic (@ionic/angular: 4.0.0-beta.17), и я использую Firebase в качестве аутентификатора (через @ angular / fire).

Всякий раз, когда я пытаюсь войти в систему с помощью номера телефона, я передаюномер (как E.164) и appVerifier, и я сделал невидимую recaptcha.Я могу заверить вас, что эти значения действительны.

firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)

Неожиданно я получил TypeError от Recaptcha:

ОШИБКА TypeError: Невозможно назначить только для чтения свойство 'taskData' изobject '[object Object]'

at HTMLDivElement.addEventListener (zone.js:1829)
at gg (recaptcha__iw.js:91)
at Vp (recaptcha__iw.js:89)
at He.Ot.A (recaptcha__iw.js:163)
at am (recaptcha__iw.js:566)
at He.am.render (recaptcha__iw.js:565)
at iW (recaptcha__iw.js:569)
at Oi (recaptcha__iw.js:578)
at jJ.w.CQ.jJ.a0.jJ.Eu (recaptcha__iw.js:573)
at Object.Ei [as reset] (recaptcha__iw.js:574)

Это весь процесс аутентификации:

return firebase.auth().signInWithPhoneNumber(phoneNumber, appVerifier)
  .then(result => (windowRef as any).confirmationResult = result)
  .catch(err => { // <-- returns error
    appVerifier.render().then(widgetId => grecaptcha.reset(widgetId));
    return Promise.reject(err);
  });

После того, как возникает эта ошибка, я получаю еще одну ошибку относительно этой строки:

appVerifier.render().then(widgetId => grecaptcha.reset(widgetId));

Uncaught TypeError: Невозможно прочитать свойство 'then' со значением null

at jJ.w.CQ.jJ.a0.jJ.Eu (recaptcha__iw.js:573)
at Object.Ei [as reset] (recaptcha__iw.js:574)
at auth.state.ts:107 <----- (the line I mentioned above)
at e.g (auth.esm.js:17)
at Fb (auth.esm.js:20)
at Bb (auth.esm.js:20)
at A.push../node_modules/@firebase/auth/dist/auth.esm.js.g.Xb (auth.esm.js:19)
at kb (auth.esm.js:13)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (zone.js:388)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (zone.js:138)

По какой-то причине, когда я понижаю версию пакета @ionic/angular до версии 4.0.0-beta.15, похоже на работу.Я понятия не имею, что происходит за кулисами.

Я не уверен, связана ли эта ошибка с Ionic, Recaptcha или Firebase.

package.json (только deps)

"dependencies": {
  "@angular/common": "~7.0.0",
  "@angular/core": "~7.0.0",
  "@angular/fire": "~5.1.0",
  "@angular/forms": "~7.0.0",
  "@angular/http": "~7.0.0",
  "@angular/platform-browser": "~7.0.0",
  "@angular/platform-browser-dynamic": "~7.0.0",
  "@angular/router": "~7.0.0",
  "@fortawesome/angular-fontawesome": "^0.3.0",
  "@fortawesome/fontawesome-svg-core": "^1.2.8",
  "@fortawesome/pro-light-svg-icons": "^5.5.0",
  "@fortawesome/pro-regular-svg-icons": "^5.5.0",
  "@fortawesome/pro-solid-svg-icons": "^5.5.0",
  "@ionic-native/core": "^5.0.0-beta.21",
  "@ionic-native/google-maps": "^5.0.0-beta.25",
  "@ionic-native/social-sharing": "^5.0.0-beta.21",
  "@ionic-native/splash-screen": "5.0.0-beta.21",
  "@ionic-native/status-bar": "5.0.0-beta.21",
  "@ionic/angular": "4.0.0-beta.17",
  "@ionic/pro": "^2.0.3",
  "@ngx-translate/core": "^11.0.0",
  "@ngx-translate/http-loader": "^4.0.0",
  "@ngxs/devtools-plugin": "^3.2.0",
  "@ngxs/form-plugin": "^3.2.0",
  "@ngxs/router-plugin": "^3.2.0",
  "@ngxs/store": "^3.2.0",
  "cordova-browser": "5.0.4",
  "cordova-plugin-device": "^2.0.2",
  "cordova-plugin-googlemaps": "2.4.6",
  "cordova-plugin-ionic-keyboard": "^2.1.3",
  "cordova-plugin-ionic-webview": "^2.2.1",
  "cordova-plugin-splashscreen": "^5.0.2",
  "cordova-plugin-statusbar": "^2.4.2",
  "cordova-plugin-whitelist": "^1.3.3",
  "core-js": "^2.5.3",
  "firebase": "^5.5.8",
  "libphonenumber-js": "^1.6.5",
  "lodash": "^4.17.11",
  "rxjs": "6.2.2",
  "zone.js": "^0.8.26"
},
"devDependencies": {
  "@angular-devkit/architect": "~0.8.5",
  "@angular-devkit/build-angular": "~0.8.5",
  "@angular-devkit/core": "~0.8.5",
  "@angular-devkit/schematics": "~0.8.5",
  "@angular/cli": "~7.0.0",
  "@angular/compiler": "~7.0.0",
  "@angular/compiler-cli": "~7.0.0",
  "@angular/language-service": "~7.0.0",
  "@ionic/angular-toolkit": "^1.0.0",
  "@types/jasmine": "~2.8.6",
  "@types/jasminewd2": "~2.0.3",
  "@types/lodash": "^4.14.119",
  "@types/node": "~10.12.0",
  "codelyzer": "~4.5.0",
  "jasmine-core": "~2.99.1",
  "jasmine-spec-reporter": "~4.2.1",
  "karma": "~3.0.0",
  "karma-chrome-launcher": "~2.2.0",
  "karma-coverage-istanbul-reporter": "~2.0.0",
  "karma-jasmine": "~1.1.1",
  "karma-jasmine-html-reporter": "^0.2.2",
  "protractor": "~5.4.0",
  "ts-node": "~7.0.0",
  "tslint": "~5.11.0",
  "typescript": "~3.1.6"
},

$ ионная информация

Ionic:

   ionic (Ionic CLI)             : 4.5.0 (C:\Users\Eliya\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework               : @ionic/angular 4.0.0-beta.17
   @angular-devkit/build-angular : 0.8.8
   @angular-devkit/schematics    : 0.8.8
   @angular/cli                  : 7.0.7
   @ionic/angular-toolkit        : 1.2.0

Cordova:

   cordova (Cordova CLI) : not installed
   Cordova Platforms     : browser 5.0.4
   Cordova Plugins       : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.2.1, (and 5 other plugins)

System:

   Android SDK Tools : 26.1.1 (E:\android-sdk)
   NodeJS            : v10.11.0 (C:\Program Files\nodejs\node.exe)
   npm               : 6.4.1
   OS                : Windows 10
...