首页 > 代码库 > node开发指南中的microblog项目中遇到的问题总结及解决方法
node开发指南中的microblog项目中遇到的问题总结及解决方法
1 使用connect-mongdo时,报错:Cannot read property ‘Store‘ of undefined
解决: require(‘connect-mongo‘)的时候加一个参数express,如下:
var express = require(‘express‘);
var MongoStore = require(‘connect-mongo‘)(express),
2 使用app.use(express.router(routers)) 提示 has no method ‘router‘
解决:原因可能是express 3.0后没有了router这个方法,继续使用之前的app.use(app.router),在app.js末尾加入:
routers(app);
(这样routes/inndex.js 可以继续使用书中的书写格式.)
3 express3.x不支持layout布局视图
解决方法:
安装express-partials组件
var partials = require(‘express-partials‘);
app.use(partials());
4 helpers 和 dynamicHelpers 方法已经不能用了,如下:
app.helpers({
inspect: function(obj) {
return util.inspect(obj, true);
}
});
app.dynamicHelpers({
headers: function(req, res) {
return req.headers;
}
});
解决方法:app.use(function(req,res,next){
res.locals.user = req.session.user;
var err = req.flash(‘error‘);
var succ = req.flash(‘success‘);
console.log(err);
res.locals.error = err.length ? err : null;
res.locals.success = succ.length ? succ : null;
next();
});
注意:这个一定要放置在app.use(app.router);前面
5 req.flash 方法不能用,解决办法如下:
运行>npm install connect-flash 安装组件
并在app.js中加入:
var flash = require(‘connect-flash‘);
app.use(flash());
6注意req.flash()方法设置的值,只能获取一次。
比如: req.flash(‘error’,’aaabbb’);
Req.flash(‘error’)
在次获取req.flash(‘error’)会得到空值
所以模版渲染的时候就得不到数据。正确做法应该先用一个过渡变量拷贝一份
res.locals.success=req.flash(‘success‘).length?req.flash(‘success‘):null;
next();
});