《Node.js开发指南》MicroBlog项目的问题汇总
来源:互联网 发布:知之网官网 编辑:程序博客网 时间:2024/05/21 10:46
重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!!
最近对Node产生了点兴趣,就看了《Node.js开发指南》一书,按照书中的例子敲完了所有代码。书是好书,非常适合新手学习,但是例子中的代码太旧,造成一些麻烦,以下列出来供大家参考:《Node.js开发指南》MicroBlog项目完整代码下载
问题一:
安装 ejs 模板的语法有问题,安装不成功,如下:
express -t ejs microblog
需要改成:
express microblog -e
问题二:
partial 方法已经不能用了,可以用include代替,如下:
<ul><%- partial('listitem', items) %></ul>
需要改成:
<% 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){});
其中参考了不少其他朋友的帖子,也供大家参考:
跟着《Node.js 开发指南》写MicroBlog实例总结
使用Express3.0实现<Node.js开发指南>中的微博系统
《node.js开发指南》(中文)观后感
express:node throwing error on mongodb
欢迎来到 石佳劼的博客,如有疑问,请在「原文」评论区 留言,我会尽量为您解答。
5 0
- 《Node.js开发指南》MicroBlog项目的问题汇总
- 《Node.js开发指南》 microblog 基于express4.15.2
- 《Node.js开发指南》书评汇总
- 《Node.js开发指南》实例中遇到的问题
- Node.js开发指南
- Node.js开发指南
- node.js的开发指南初解
- 关于《Node.js开发指南》
- 《node.js开发指南》观后感
- 《node.js开发指南》观后感
- 《Node.js开发指南》读书笔记
- node.js开发指南中出现的问题 has no method 'router'解决办法
- 《Node.js开发指南》微博程序中遇到的问题
- 用Intellj Idea 开发express4 、jade模板,bootstrap3的《node.js开发指南》上的微博项目
- 基于node.js+ MongoDB的mircoblog,完成参考《Node.js开发指南》的mircoblog
- 用node.js开发 ejs博客项目时遇到的问题
- 为什么要有Node.js -- 读《Node.js开发指南》有感
- node.js的项目
- 宏的使用
- Windows 8之失败,电脑作为娱乐设备VS工作工具
- 蝶雙飛雙
- HDU - 1506 Largest Rectangle in a Histogram
- 队列的顺序存储结构及其基本运算的实现
- 《Node.js开发指南》MicroBlog项目的问题汇总
- java反射机制(1)
- Button的使用(五):从xml中加载
- Android——Intent和Intent过滤器
- 基于ajax二级联动
- JSP 中文乱码问题的处理解决方案
- 最大公约数问题
- 显式调用析构函数
- 来博看的日子