赋值表达式的左侧不能是常量或只读属性

Hon*_*iao 18 mongoose express angular2-universal typescript2.0 angular

当我在Express服务器上使用此行时,它在TypeScript 1.x中运行良好

mongoose.Promise = global.Promise;
Run Code Online (Sandbox Code Playgroud)

(用法mongoose.Promise = global.Promise;来自猫鼬文件)

更新到TypeScript 2.x后,它在终端中显示此错误,并且不允许我启动服务器.

赋值表达式的左侧不能是常量或只读属性.

我怎么解决这个问题?谢谢

der*_*nio 32

这是因为在es6所有模块中的变量都被认为是常量.

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

TypeScript 2.0错误(没有报告此错误)修复.

由于mongoose仍然使用commonjs- var mongoose = require("mongoose")-而不是es6导入语法(这是在分型使用),您可以通过假设该模块类型的抑制误差any.

解决方法:

(mongoose as any).Promise = global.Promise;
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!刚刚添加了另一种类似的方式:`(<any> mongoose).Promise = global.Promise;` (5认同)