nodejs開發指南中出現的問題以及解決彙總

問題一: 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){});

相關文章
相關標籤/搜索