按着《NodeJS开发指南》里的第五章建立microblog的例子操作,使用node.js 的express框架配置将session存储到mongodb时出错:TypeError: Cannot read property 'Store' of undefined。

加载connect-mongo模块的写法为:

//加载模块

var MongoStore= require("connect-mongo");

//配置express session

app.use(express.session({

   secret:setting.cookieSecret,

   db: seeting.db

})); 

启动程序报错:TypeError: Cannot read property 'Store' of undefined

网上有人修改如下之后重启是OK的:

With express:

    var express = require('express');
var MongoStore = require('connect-mongo')(express); app.use(express.session({
secret: settings.cookie_secret,
store: new MongoStore({
db: settings.db
})
}));

但是我修改之后报如下错误:

Error: Most middleware (like session) is no longer bundled with Express and must
be installed separately. Please see https://github.com/senchalabs/connect#middl
eware.
at Function.Object.defineProperty.get (E:\-Study\NoteJS\microblog\node_m
odules\express\lib\express.js::)
at module.exports (E:\-Study\NoteJS\microblog\node_modules\connect-mongo
\lib\connect-mongo.js::)
at Object.<anonymous> (E:\-Study\NoteJS\microblog\app.js::)
at Module._compile (module.js::)
at Object.Module._extensions..js (module.js::)
at Module.load (module.js::)
at Function.Module._load (module.js::)
at Module.require (module.js::)
at require (module.js::)

后来修改回原来的写法,提示找不到“Store”,然后就到目录“\node_modules\connect-mongo”下查看Readme.md文档,上面提示:

With express4:

    var session    = require('express-session');
var MongoStore = require('connect-mongo')(session); app.use(session({
secret: settings.cookie_secret,
store: new MongoStore({
db : settings.db,
})
})); With express<: var express = require('express');
var MongoStore = require('connect-mongo')(express); app.use(express.session({
secret: settings.cookie_secret,
store: new MongoStore({
db: settings.db
})
})); With connect: var connect = require('connect');
var MongoStore = require('connect-mongo')(connect);

因为本机Express的版本是4.0,所以修改成用第一种方式引用session,同时修改目录下的package.json文件,添加对“express-session”的依赖如下:

{
"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"express": "~4.0.0",
"static-favicon": "~1.0.0",
"morgan": "~1.0.0",
"cookie-parser": "~1.0.1",
"body-parser": "~1.0.0",
"debug": "~0.7.4",
"ejs": "~0.8.5",
"mongodb": ">= 0.9.9",
"connect-mongo": ">= 0.1.7",
"express-session": "~1.0.4"
}
}

然后在命令行下进入到当前目录,执行npm install就默认安装了express-session模块了。

之后再执行npm start启动服务,问题就解决了。

NodeJS - Express 4.0错误:Cannot read property 'Store' of undefined的更多相关文章

  1. NodeJS - Express 4.0下使用app.dynamicHelpers错误

    在NodeJS - Express 4.0下使用app.dynamicHelpers发生错误: app.dynamicHelpers({ ^ TypeError: Object function (r ...

  2. NodeJS -Express 4.0 用include取代partial

    在Express 4.0 下按如下方法设置: (1)运行cmd 输入:npm install express-partials -g (2)下载成功后.在app.js 中引用此插件   var par ...

  3. NodeJS - Express 3.0下ejs模板使用 partial展现 片段视图

    如果你也在看Node.js开发指南,如果你也在一步一步实现 microBlog 项目!也许你会遇到本文提到的问题,如果你用的是Express 3.0 本书实例背景是 Express 2.0 而如今升级 ...

  4. jquery错误: Cannot read property ‘msie’ of undefined

    背景 Web application, 引用了jquery 1.10.2和fancybox 1.3.4 现象 访问页面遭遇Cannot read property ‘msie’ of undefine ...

  5. Visual Studio 2013 Ultimate & IIS Express 8.0 错误 [iisexpress.exe”已退出,返回值为 -1073741816 (0xc0000008)] 解决方法

    1. 开发环境 Visual Studio 2013 Ultimate IIS 8.0 Express 2. 错误信息 错误提示:iisexpress.exe”已退出,返回值为 -1073741816 ...

  6. NodeJS - Express4.0错误:Cannot read property &amp;#39;Store&amp;#39; of undefined

    Express在使用mongodb的时候app配置出错 //settings.js module.exports={ cookieSecret:"xxxx", db:"d ...

  7. ExtJS错误解决 Cannot read property 'on' of undefined

    背景 用ExtJS新写了一个功能,运行时控制台打印错误Cannot read property 'on' of undefined,出错代码位置是Ext.define.bindStoreListene ...

  8. 解决vue2.0路由 TypeError: Cannot read property 'matched' of undefined 的错误问题

    刚开始使用vue-router2.0,虽然也用了vux,用起来却发现一个问题--具体如下: 正常情况下使用脚手架跑完之后,然后修改源项目,首先在main.js入口里把该import进去的vuex,vu ...

  9. Nodejs开发框架Express3.0开发手记–从零开始

    转载请注明出处: http://blog.fens.me/nodejs-express3/ 程序代码已经上传到github有需要的同学,自行下载. https://github.com/bsspiri ...

随机推荐

  1. Hybrid小程序混合开发之路 - 数据交互

    HTML+CSS是历史悠久.超高自由度.控制精准.表现能力极强.编码简单.学习门槛超低.真跨平台的一种UI界面开发方式. 本文介绍的是微信小程序和H5混合开发的一种数据交互方式. 很多应用在原生界面中 ...

  2. VMware workstation运维实践系列博客导航

    第一章:VMware workstation虚拟化1.1 VMware workstation计算网络存储介绍1.2 VMware workstation其他功能特性介绍1.3 VMware work ...

  3. mysql主从同步(5)-同步延迟状态考量(seconds_behind_master和pt-heartbea)

    一般情况下,我们是通过"show slave status \G;"提供的Seconds_Behind_Master值来衡量mysql主从同步的延迟情况.具体说明见:mysql主从 ...

  4. 10 分钟理解 BFC 原理

    一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: 普通流 (normal flow) 在普通流中,元素按照其在 HTML 中的先后位置至 ...

  5. 使用rem进行自适应页面布局

    设计师给到我们前端的设计稿一般是按照iphone6屏幕(iphone6 两倍屏 设备 分辨率(物理尺寸) 屏幕宽高 PPI 状态栏高度 导航栏高度 标签栏高度 iPhone6 750×1334 px ...

  6. 个人博客作业Week 3 ——微软必应词典客户端

    产品:必应词典客户端 (http://bing.msn.cn/dict/)必应词典有PC,Win8/10, Windows Phone,iPhone,Android,iPad 客户端 选择客户端为:i ...

  7. 团队作业M1反思

    经过这两个多月以来的软件工程的学习,还有团队项目的经历,总结反思如下: 首先,一个月的软件工程团队项目的进行让我对软件开发有了比较实际的认识,以前我们的编程多是个人编程,两人编程,程序难度低,代码量少 ...

  8. Linux内核分析第三章读书笔记

    第三章 进程管理 3.1 进程 进程就是处于执行期的程序 进程就是正在执行的程序代码的实时结果 线程:在进程中活动的对象.每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 内核调度的对象是 ...

  9. realm vs. domain

    从wiki的角度:https://wikidiff.com/domain/realm domain是物理的,realm是抽象的,都是领域. domain是一个人或组织拥有或控制的地理区域,而realm ...

  10. IE下JS保存图片

    function ieSave()                   {                       var img = document.images[0];            ...