赋值表达式的左侧不能是常量或只读 属性
Left-hand side of assignment expression cannot be a constant or a read-only property
当我在我的 Express 服务器上使用这一行时,它在 TypeScript 中运行良好1.x
mongoose.Promise = global.Promise;
(mongoose.Promise = global.Promise;
的用法来自the mongoose document)
更新到 TypeScript 2.x 后,它在终端中显示此错误,并且不让我启动服务器。
Left-hand side of assignment expression cannot be a constant or a
read-only property.
我该如何解决这个问题?谢谢
这是因为在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;
还有一种方法可以使用这种技术来维护类型检查和智能感知。
import * as mongoose from "mongoose"; // same as const mongoose = require("mongoose");
type mongooseType = typeof mongoose;
(mongoose as mongooseType).Promise = global.Promise;
// OR
(<mongooseType>mongoose).Promise = global.Promise;
这是一种有用的方法,可以使用模拟函数仅覆盖模块中的某些函数,而无需像 jest.mock()
.
这样的模拟框架
当我在我的 Express 服务器上使用这一行时,它在 TypeScript 中运行良好1.x
mongoose.Promise = global.Promise;
(mongoose.Promise = global.Promise;
的用法来自the mongoose document)
更新到 TypeScript 2.x 后,它在终端中显示此错误,并且不让我启动服务器。
Left-hand side of assignment expression cannot be a constant or a read-only property.
我该如何解决这个问题?谢谢
这是因为在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;
还有一种方法可以使用这种技术来维护类型检查和智能感知。
import * as mongoose from "mongoose"; // same as const mongoose = require("mongoose");
type mongooseType = typeof mongoose;
(mongoose as mongooseType).Promise = global.Promise;
// OR
(<mongooseType>mongoose).Promise = global.Promise;
这是一种有用的方法,可以使用模拟函数仅覆盖模块中的某些函数,而无需像 jest.mock()
.