nodejs开发指南中出现的问题以及解决汇总

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

问题一:

安装 ejs 模板的语法有问题,安装不成功,如下:

express -t ejs microblog

需要改成:

express  -e  ejs  microblog

问题二:

partial 方法已经不能用了,可以用include代替,如下:

    <%- partial('listitem', items) %>

需要改成:

<% items.forEach(function(listitem){ %>

<% 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){});

转载于:https://my.oschina.net/u/1771420/blog/265355

你可能感兴趣的:(nodejs开发指南中出现的问题以及解决汇总)