問題一: node
安裝 ejs 模板的語法有問題,安裝不成功,以下: mongodb
express -t ejs microblog express
須要改爲: npm
express -e ejs microblog app
問題二: ide
partial 方法已經不能用了,能夠用include代替,以下: post
<ul><%- partial('listitem', items) %></ul> ui
須要改爲: spa
<% items.forEach(function(listitem){ %> code
<% include listitem %>
<% }) %>
問題三:
helpers 和 dynamicHelpers 方法已經不能用了,以下:
app.helpers({
inspect: function(obj) {
return util.inspect(obj, true);
}
});
app.dynamicHelpers({
headers: function(req, res) {
return req.headers;
}
});
app.get('/helper', function(req, res) {
res.render('helper', {
title: 'Helpers'
});
});
須要改爲:
var util = require('util');
app.locals({
inspect: function(obj){
return util.inspect(obj, true);
}
});
app.use(function(req, res, next){
res.locals.headers = req.headers;
next();
});
app.get('/helper', function(req, res){
res.render('helper',{
title: 'Helpers'
});
});
還須要注意的是,上面這段代碼須要放在 app.use(app.router); 前面。
問題四:
express3.*已經不支持layout方法了,因此要改爲include才能正常顯示首頁。
在 views 文件夾下新建,header.ejs 和 footer.ejs。
layout.ejs 中的內容,以 <%- body %> 爲界限,上面的內容寫入header.ejs ,下面的內容寫入footer.ejs
而後在 index.js 中加入 <% include header.ejs %> 和 <% include footer.ejs %>,把表單內容,寫在中間便可
問題五:
配置mongodb時,不少報錯:
app.js中的 var settings = require('../settings'); 應改爲 var settings = require('./settings');
app.js中的 app.use(express.bodyParser()); 應該去掉
app.js中的 var MongoStore = require('connect-mongo'); 應改爲 var MongoStore = require('connect-mongo')(express);
問題六:
出現 has no method 'router' 問題,解決辦法以下:
保留原來的 app.use(app.router); 不要按做者的說法改爲 app.use(express.router(routes));
而且在 app.js 最末尾加上 routes(app);
並且還要刪除掉 app.js 中的
app.get('/', routes.index);
app.get('/u/:user', routes.user);
app.post('/post', routes.post);
app.get('/reg', routes.reg);
app.post('/reg', routes.doReg);
app.get('login', routes.login);
app.post('login', routes.doLogin);
app.get('/logout', routes.logout);
問題七:
req.flash 方法不能用,解決辦法以下:
運行>npm install connect-flash 安裝組件
並在app.js中加入:
var flash = require('connect-flash');
app.use(flash());
問題八:
Error: Cannot use a writeConcern without a provided callback
at Db.ensureIndex (D:\Work\code\nodejs\microblog\node_modules\mongodb\lib\mongodb\db.js:1395:11)
解決辦法以下:
\models\user.js 中的 collection.ensureIndex('name', {unique: true}); 改爲collection.ensureIndex('name', {unique: true}, function(err, user){});
\models\post.js 中的 collection.ensureIndex('user'); 改爲collection.ensureIndex('user' ,function(err, post){});