ES6 - 如何导入connect-mongo(会话)?

lau*_*kok 4 mongoose mongodb node.js express

在 ES6 之前,这就是我导入connect-mongo(会话)的方式:

var MongoStore = require("connect-mongo")(session);
Run Code Online (Sandbox Code Playgroud)

但是如何在 ES6 中导入它呢?

import MongoStore from 'connect-mongo';
let monStore = MongoStore(session);
Run Code Online (Sandbox Code Playgroud)

错误:

const Store = connect.Store || connect.session.Store;
                                                  ^

TypeError: Cannot read property 'Store' of undefined
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Low*_*put 9

使用非常相似的connect-mongodb-session ,您可以:

import { default as connectMongoDBSession} from 'connect-mongodb-session';

const MongoDBStore = connectMongoDBSession(session);

var store = new MongoDBStore({
  uri: 'mongodb://localhost:27017/tmp',
  collection: 'sessions'
});
Run Code Online (Sandbox Code Playgroud)

两个包(connect-mongodb-sessionconnect-mongo)都导出一个以express-session模块作为参数的匿名函数。此函数返回一个构造函数并使用module.export导出,因此它被视为默认导出,您可以使用 导入它import { default as NameForAnonymousFunction } from 'connect-mongo'

现在,我认为您应该遵循的一个好的学习实践是尝试阅读您正在安装的包的实际代码,至少是index.js

由于connect-mongois usingmongodb@2.2.36connect-mongodb-sessionis using mongodb@3.0.11,我在connect-mongo之前添加了一个已弃用的标签


ale*_*xi2 5

您可以尝试像这样导入:

import * as connectMongo from 'connect-mongo';

const MongoStore = connectMongo(session);
Run Code Online (Sandbox Code Playgroud)

来自 MDN 文档

导入整个模块的内容。这会将 myModule 插入当前范围,包含从“my-module.js”导出的所有绑定。

import * as myModule from "my-module";

更多信息可以在这里找到。

  • 谢谢。`import connectMongo from 'connect-mongo' 似乎没问题;const MongoStore = connectMongo(session);` (3认同)
  • 类型错误:类构造函数 MongoStore 无法在没有“new”的情况下调用 (2认同)