![](/img/trans.png)
[英]AWS CDK, typescript - Argument of type 'this' is not assignable to parameter of type 'Construct'
[英]TypeScript - Argument of type '{}' is not assignable to parameter of type '{}' - MongoStore
我对TS相对较新,并且在new MongoStore()
参数中遇到类型问题。 通常,我可以通过编写db: database
作为JS中的参数来重用Native MongoDB连接,但是TS显示以下错误:
类型'{{db:Db; }'不能分配给'MongoUrlOptions |类型的参数。 MogooseConnectionOptions | NativeMongoOptions | NativeMongoPromiseOptions”。 输入'{db:Db; }”不能分配给“ NativeMongoPromiseOptions”类型。 类型'{{db:Db; }'。
我尝试将new MongoStore({ db: database } as NativeMongoOptions)
,但这也无济于事。
[更新]添加as NativeMongoOptions
会产生差异错误:
输入'{db:Db; }”不可分配给“ NativeMongoOptions”类型。 属性“ db”的类型不兼容。 类型'import(“ / node_modules / @ types / mongodb / index”)。db'不可分配给类型'import(“ / node_modules / @ types / connect-mongo / node_modul ...'。缺少属性'authenticate'在“ Db”类型中。
这是我的代码或TS类型的问题吗?
以下是我的代码片段。
const MongoStore: connectMongo.MongoStoreFactory = connectMongo(session);
const app: express.Application = express();
enableMiddleware(app);
(async () => {
try {
const client: mongodb.MongoClient = await mongodb.MongoClient.connect(config.dbUrl, { useNewUrlParser: true });
console.log("Connected correctly to server");
const database: mongodb.Db = client.db(config.dbName);
app.use(session({
resave: false,
saveUninitialized: false,
secret: "secret123",
store: new MongoStore({
db: database,
}),
}));
app.use(router(database));
} catch (error) {
console.log("Error connecting to MongoDB", error);
}
})();
发现了问题所在,一直是TS 类型的问题, @ types / connect-mongo使用的是旧版本的@ types / mongodb ^ 2,而我在项目中使用的是@ types / mongodb ^ 3。
当前解决方案,将@ types / connect-mongo包依赖项更新为最新(将@ types / mongodb ^ 2覆盖为^ 3)。
您需要在package.json内的devDependencies中使用以下行
"@types/mongodb": "^3"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.