2016-08-07 35 views
17

Wenn ich diese Zeile auf meinem Express-Server verwenden, es funktioniert gut in Typoskript 1.xLinke Seite des Zuweisungsausdruck kann nicht eine Konstante oder eine schreibgeschützte Eigenschaft sein

mongoose.Promise = global.Promise; 

(Die Verwendung von mongoose.Promise = global.Promise; ist von)

Nach der Aktualisierung auf TypeScript 2.x, zeigt es diesen Fehler im Terminal, und lasse mich nicht starten den Server.

Die linke Seite des Zuweisungsausdrucks darf keine Konstante oder schreibgeschützte Eigenschaft sein.

Wie kann ich das lösen? Dieser Dank

Antwort

31

ist, weil in es6 alle Moduls Variablen berücksichtigt werden Konstanten.

https://github.com/Microsoft/TypeScript/issues/6751#issuecomment-177114001

In TypeScript 2.0 der Fehler (der diesen Fehler nicht Reporting) wurde behoben.

Da mongoose noch mit der commonjs-var mongoose = require("mongoose") - nicht der es6 Import-Syntax (die in den Typisierungen verwendet wird), können Sie den Fehler unterdrücken, indem angenommen wird das Modul vom Typ any.

Abhilfe:

(mongoose as any).Promise = global.Promise; 
+4

es Ihnen danken! habe gerade einen weiteren ähnlichen Weg hinzugefügt: '( mongoose) .Promise = global.Promise;' –