2016-08-12 2 views
1

Ich bin mit WebRTC in Angular 2.Fehler TS2339: Das Objekt 'fangen' existiert nicht auf Typ 'PromiseLike <void>'

In Typoskript 1.x ich diese erfolgreich nutzen können.

navigator.mediaDevices.getUserMedia(constraints) 
     .then(myStream => { 
     this.myStream = myStream; 
     }) 
     .catch(error => { 
     console.log(error); 
     }); 

Aber nach zu Typoskript 2.x aktualisieren, ich habe diesen Fehler in meinem Terminal, wenn ich npm run watch laufen:

Fehler TS2339: Das Objekt 'fangen' existiert nicht auf Typ ' PromiseLike '.

Meine IDE WebStore zeigt rot zu:

enter image description here

Ich habe bereits npm install --save-dev @types/webrtc.

Meine tsconfig.json Datei:

{ 
    "compilerOptions": { 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "target": "es5", 
    "module": "commonjs", 
    "removeComments": true, 
    "sourceMap": true, 
    "lib": ["es6", "dom"], 
    "types": [ 
     "body-parser", 
     "compression", 
     "express", 
     "express-session", 
     "mime", 
     "node", 
     "serve-static", 
     "webrtc", 
     "ws" 
    ] 
    }, 
    "include": [ 
    "node_modules/@types/**/*.d.ts", 
    "src/**/*.ts" 
    ], 
    "exclude": [ 
    "node_modules", 
    "!node_modules/@types/**/*.d.ts" 
    ], 
    "compileOnSave": false, 
    "buildOnSave": false, 
    "atom": { 
    "rewriteTsconfig": false 
    } 
} 

I universal-starter als Start verwenden, so meine nodemon.json und package.json mit ihnen identisch sind, nur mehr Pakete hat.

Wie kann ich diesen Fehler loswerden?

+0

Was gibt 'getUserMedia' zurück? –

+0

@torazaburo gibt es zurück 'Promise ' –

+1

@HongboMiao Bitte posten Sie die vollständige Fehlermeldung (mit Call-Stack). Ich kann diesen Fehler nicht reproduzieren, wenn ich dein Beispiel ausführe. 'getUserMedia.then' gibt in meinem Setup ein' Versprechen' und kein 'PromiseLike' zurück. Dadurch bekomme ich keinen Fehler. Tritt dieser Fehler an einer anderen Stelle in Ihrem "echten Code" auf oder erhalten Sie diesen Fehler mit diesem genauen Code? – maiermic

Antwort

4

Die build-in-Bibliothek dom erklärt das Problem verursacht Definition (siehe lib.dom.d.ts):

getUserMedia(constraints: MediaStreamConstraints): PromiseLike<MediaStream>; 

während @types/webrtc Ihre erwartete Definition erklärt (siehe MediaStream.d.ts):

getUserMedia(constraints: MediaStreamConstraints): Promise<MediaStream>; 

Es gibt eine open issue in das TypeScript-Repository.

+0

Oh, ich war zu früh glücklich. nach dem Wechsel zu '" lib ": [" es6 "," dom "," es2015.promise "],' zeigt immer noch den gleichen Fehler im Terminal, wenn ich 'npm run watch' starte –

+0

'" es6 "' beinhaltet '" es2015 .promise "'. Also brauchst du nicht "es2015.promise" ' – maiermic

+0

Wie sieht dein' watch' Skript in deinem 'package.json' aus? – maiermic

Verwandte Themen