您的位置:首页 > Web前端 > Node.js

node.js开发指南 例子中存在的问题

2013-01-06 15:42 543 查看
《node.js开发指南》下文简称书, 例子存在问题,多少是因为express版本升级问题,本文主要是列出学习过程中遇到的问题和解决办法。

本文所用express版本为3.0.6,

express官网: http://expressjs.com/api.html

express翻译:http://expressjs.jser.us/api.html

express中文论坛:http://cnodejs.org

1.Cannot read property 'connect.sid' of undefined

在文件 app.js

app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.session({
secret:settings.cookieSecret,
store:new MongoStore({
db:settings.db
})
}));


添加cookieParser,就可以解决问题

app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
secret:settings.cookieSecret,
store:new MongoStore({
db:settings.db
})
}));


2.书,5.6.3页面注册,用 app.use(express.router(routes)) 代替 app.use(app.router):

app.configure(function (){
app.set('views', --dirname + '/views');
app.set('view engine', 'ejs');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
secret: settings.cookieSecret,
store:  new  MongoStore({
db: settings.db
})
}));
app.use(express.router(routes));
app.use(express. static (--dirname + '/public'));
});


在本文express版本下一句删除了express.router这个方法。解决办法:将routes(app);加在后面。

app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(express.cookieParser());
app.use(express.session({
secret:settings.cookieSecret,
store:new MongoStore({
db:settings.db
})
}));
// app.use(app.router);
// app.use(express.router(routes));
app.use(express.static(path.join(__dirname, 'public')));
routes(app);
});


在这个例子中需要注意,app.js获取已经设置过设置项的操作在routes\index.js下设置,如书所写。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: