我使用的Express 版本是3.0.5,作者出书时使用的Express版本太低了,导致书中很多代码都不能正确地执行,下面分享一下自己遇到一些问题后网上找到的解决办法。
----解决书中会话的代码问题----
使用Express自带的MomeryStore:
在app.js中添加:
app.use(express.cookieParser());
app.use(express.session());
app.get('/session', function(req, res)
{
if (req.session.logged)
{ res.send('logged'); }
else
{ req.session.logged = true;
res.send('log'); }
});
使用MongoStore代替MemoryStore:
在app.js中添加:
var MongoStore = require('connect-mongo')(express);
app.use(express.cookieParser());
app.use(express.session({
store: new MongoStore ({
host: 'localhost',
port: 27017,
db: 'mydb'
}),
secret: 'what a good day'
}));
app.get('/session', function(req, res)
{
if (req.session.logged)
{ res.send('logged'); }
else
{ req.session.logged = true;
res.send('log'); }
});
----解决书中路由控制的代码问题----
在app.js中添加:
app.use(app.router); // 这个保持不变。
routes(app); // 在app.configure之后添加(其实这样很弱智)。
在routes/index.js中添加:
module.exports = function(app) {
...
};
后来还遇到很多问题,我真的看不下去了,还不如直接看Express 3.x的官方examples,链接在这里:https://github.com/visionmedia/express/tree/master/example,我的建议是如果你想用Express 3.x,就不要看这本书,如果你想看这本书,就用Express 2.x。