重要说明:本博已迁移到 石佳劼的博客,有疑问请到 文章新地址 留言!!!

最近对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 

欢迎来到 石佳劼的博客,如有疑问,请在「原文」评论区 留言,我会尽量为您解答。


《Node.js开发指南》MicroBlog项目的问题汇总相关推荐

  1. 《Node.js开发指南》书评汇总

    刚查了下库存,发现订阅<Node.js开发指南>的读者大增,这是为什么呢?看了下近期本书在豆瓣的评论,口碑很好,现将豆瓣的书评汇总如下: ------------------------- ...

  2. 《node.js开发指南》读后感

    <node.js开发指南>这部只有180多页的书,我花了一个多月的业余时间算是粗略看完了.中间因为公司项目的加班,中断了几次.大大拖累进度,现在空出来时间,写一点自己的小小感想吧. 先从缺 ...

  3. nodec mysql_Node.js 连接 MySQL 并进行数据库操作 –node.js 开发指南

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包 通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来 ...

  4. Node.js 连接 MySQL 并进行数据库操作 –node.js 开发指南

    Node.js是一套用来编写高性能网络服务器的JavaScript工具包 通常在NodeJS开发中我们经常涉及到操作数据库,尤其是 MySQL ,作为应用最为广泛的开源数据库则成为我们的首选,本篇就来 ...

  5. 《Node.js开发指南》读书笔记

    继续学学node.js.翻开书首先被惊到=.=:作者BYVoid是清华大学2010级本科--同样是2010级本科,我真是无语凝噎,大学浪费了好多时间.不过过去的已经过去了,接下来好好努力提高才好,加油 ...

  6. Node.js 开发指南笔记

    第一章:node简介 介绍了node是什么:node.js是一个让javascript运行在服务器端的开发平台, node能做些什么:[书上的] 具有复杂逻辑的网站 基于社交网络的大规模Web应用 W ...

  7. 使用Nodejs创建基本的网站 Microblog--《Node.js开发指南》 1

    使用Web框架 -- Express express -g  全局安装 express express_examplename install dependencies: $ cd express_e ...

  8. 基于node.js开发环境下创建及开发vue.js项目的环境配置骤

    基于node.js开发环境下创建开发vue.js项目的环境配置骤如下: 步骤一:安装node.js,安装完后运行node -v命令检安装node的查版本,判断是否安装成功.Npm是node.js包管理 ...

  9. Vue.js+Node.js开发实战:从入门到项目上线

    <Vue.js+Node.js开发实战:从入门到项目上线>以JavaScript语言为基础,以一个完整的网站开发过程为主线,介绍了一整套面向Web项目的开发技术,如使用Node.js搭建服 ...

最新文章

  1. Android 马甲包制作流程
  2. LeetCode-剑指 Offer 32 - I. 从上到下打印二叉树
  3. 深圳出台数据中心PUE新政,或将开启千亿级节能市场
  4. unity加载sprite_Unity 分离贴图 alpha 通道实践
  5. property、staticmethod、classmethod与__str__的用法
  6. Forever让NodeJS应用后台执行
  7. xposed hook java_[原创]Android Hook 系列教程(一) Xposed Hook 原理分析
  8. [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
  9. 模型类型与加速潜力的关系
  10. 如何在Delphi 中调用C#生成的DLL类库
  11. udp数据包大小问题
  12. 作为一名基层管理者如何利用情商管理自己和团队(一)
  13. matlab gmm,GMM聚类及Matlab代码实现
  14. python的debug为什么点第一行直接运行结束了_Python 代码调试工具 pdb 快速入门
  15. RL(Chapter 6): Cliff Walking
  16. AJAX+Servlet实现客户端无刷新请求服务器实践
  17. 果断型性格分析,果断型人格的职业发展
  18. js实例之分解质因数
  19. DCT变换及matlab实现
  20. kalilinux-arpspoof-arp攻击

热门文章

  1. wps 表格 自动生成序号
  2. 《2023游戏行业热点趋势报告》|Party Game游戏成为新趋势,备受消费者瞩目
  3. 【DFS】【剪枝】数独(简单版)
  4. 日语(五十元音)_01
  5. win10无法登录Microsoft账号(登录页面无法加载)
  6. PyCharm 里面的 c、m、F、f、v、p 分别代表什么含义?
  7. java练习04|银行利率表如下表所示,请计算存款10000元,活期1年、活期2年,定期1年,定期2年后的本息合计。
  8. MySQL解压版安装及配置(本地windows环境)
  9. Minecraft 1.12.2模组开发(十九) 自定义3D物品模型
  10. python处理pdf实例_Python程序图片和pdf上文字识别实例