2017-12-05 2 views
2

Im ein ionisches Anfänger und wurde nach ein paar Übungen und als ich versuchte, einen Fehler zu fangen ich in einige Typoskript Probleme lief ...Property ‚Fang‘ existiert nicht auf Typ ‚PromiseLike <void>‘

Immobilien 'catch' existiert nicht auf 'PromiseLike'

Muss ein veralteter Code oder etwas sein.

Hier ist das Problem. Es passiert mit jeder Seite, die ich versuche, den Fang zu verwenden.

.then(() => { resolve(true);}) 
.catch((err) => {reject(err);}) 

Here is a screenshot

Here is another screenshot

////////////////// UPDATE ////////// Hier ist die package.json-Datei. Ich versuche, eine Firebase-Chat-App zu erstellen.

{ 
    "name": "chat", 
    "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" 
    }, 
    "dependencies": { 
    "@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/file": "^4.4.2", 
    "@ionic-native/file-chooser": "^4.4.2", 
    "@ionic-native/file-path": "^4.4.2", 
    "@ionic-native/splash-screen": "4.4.0", 
    "@ionic-native/status-bar": "4.4.0", 
    "@ionic/storage": "2.1.3", 
    "angularfire2": "^5.0.0-rc.4", 
    "cordova-plugin-file": "^5.0.0", 
    "cordova-plugin-filechooser": "^1.0.1", 
    "cordova-plugin-filepath": "^1.1.0", 
    "firebase": "^4.7.0", 
    "ionic-angular": "3.9.2", 
    "ionicons": "3.0.0", 
    "rxjs": "5.5.2", 
    "sw-toolbox": "3.6.0", 
    "zone.js": "0.8.18" 
    }, 
    "devDependencies": { 
    "@ionic/app-scripts": "3.1.4", 
    "typescript": "2.4.2" 
    }, 
    "description": "An Ionic project", 
    "cordova": { 
    "plugins": { 
     "cordova-plugin-file": {}, 
     "cordova-plugin-filechooser": {}, 
     "cordova-plugin-filepath": {} 
    } 
    } 
} 
+0

Können Sie die Datei 'package.json' anzeigen? – Sampath

+0

@Sampath aktualisiert es –

+0

Das Problem kann leicht auf die Tatsache zurückgeführt werden, dass als [Sie können hier] (https://github.com/Microsoft/TypeScript/blob/7bb5fc22c28311b9a08c6188ef6093ee5271c1a3/lib/lib.es5.d.ts# L1291) 'PromiseLike' repräsentiert nur ein thenable. Ich vermute, das Problem ist, dass Sie eine Rxjs-Methode verwenden, die ein Versprechen wie ein Observable in eine Observable einpasst, wie viele, aber da Sie nur einen Screenshot von Ihrem Mantel gepostet haben, ist es sehr schwer zu sagen. Bitte posten Sie den eigentlichen Programmtext. Wenn dein Code einfach verspricht, kannst du das Versprechen anpassen, indem du etwas wie einen Versuch verwendest, mit Async zu fangen, erwarte –

Antwort

-1

Das Problem ist wahrscheinlich, weil die „und dann“ auf Push eine ThenableReference kehrt die im Gegenzug bewirkt eine „PromiseLike“ zurückzukehren. Wenn Sie stattdessen "set" beim Drücken auswählen, wird ein then zurückgegeben. So sollte das Verfahren wie Lesen dieses

let promise = new Promise((resolve, reject) => { 
 
     this.firerequest.child(request.recipient).push().set(
 
     { sender: request.sender } 
 
    ).then(() => { 
 
     resolve({ success: true }) 
 
     }).catch((error) => { 
 
     reject(error); 
 
     }) 
 
    }) 
 

 
    return promise;

Ihr Auszug aus Raja Yogan den Chat, so dass ich nur Code von einem anderen Anbieter eingefügt. Hoffe es hilft.

Verwandte Themen