nodejs的操作

由于版本造成的命令不能正常安装,请参考五问题

一.概念:

参考百度百科:

http://baike.baidu.com/link?url=aUrGlI8Sf20M_YGk8mh--dM83NhajEdefGvqZkpcwh95CKSqQ8_9C_10dyB-zIapRcF66MWnYljhs4rEiT_EkyPVJ9BFNeq826Gf0GQT9ksBf0I0H0QhcpzDXiGzFHo4T6ifwY08J6V4iQu2Z0QzRq

二.下载:

访问nodejs官网 www.nodejs.org/download/   下载与机器相匹配的版本

三.安装:

参考百度经验:

http://jingyan.baidu.com/article/b0b63dbfca599a4a483070a5.html

四.exepress的安装:

1.安装exepress框架:

Quick Start

(1)npm install -g express//安装全局的express。

(2)express -t ejs webNodejs//使用ejs模板引擎创建项目,项目名为webNodejs,webNodejs也可以是路径。

(3)cd webNodejs && npm install//进入项目路径下并且安装。

(4) cd webNodejs//进入项目路径

(5) nmp start//启动服务,如果app.js是入口,就可以直接启动app.js,反之,使用nmp start[我部署的就在bin/www此文件。(注意)]

完成后如下图:

2.参考github官网:

https://github.com/strongloop/express

3.参考expressjs官网:

http://www.expressjs.com.cn/4x/api.html

四.Demo:

参考百度云盘:

五.问题:

问题一:
安装 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){});

nodejs nodejs的操作的更多相关文章

  1. Nodejs通过Thrift操作hbase卡住原因分析及与javascript的垃圾回收机制的关系

    在最近使用Nodejs通过Thrift操作hbase的时候写了个脚本,不断发送http请求,从而取得hbase下所需的数据,但是在run的过程中for循环并没有执行完全,在执行一部分后会卡住,就再也进 ...

  2. nodejs 使用mongoose 操作mongodb

    nodejs操作mongodb可以使用mongoose: Mongoose is a MongoDB object modeling tool designed to work in an async ...

  3. nodeJs的Buffer操作

    再nodejs里,很多类是引入模块才能使用,Buffer是一个全局类,他不需要require引入 Buffer有三种构造函数 //1.在构造函数传一个数字,规定buffer的长度.默认全是16进制的0 ...

  4. nodejs 循环中操作需要同步执行解决方案

    最近用nodejs做了个针对某网站的小爬虫.干坏事得低调对吧,不能同时开太多的网络访问,结果各种回调/循环虐的心力交瘁. 经过了n次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...

  5. nodeJS 中mongoose操作分页

    开始前先聊聊五毛钱的: 好久没写了,可能是因为懒(哎),写这个是好事,既帮助了自己,巩固一下知识,也可以让别人给自己纠错纠错,三月份接触到了node,先是跟着一些教程写了一些小实例,感觉自己就喜欢上了 ...

  6. nodejs之mongodb操作

    声明: 当查询到数据库数据后,对数据库数据进行遍历,可以采用toArray()函数,具体实现可以看第六点 1.本地安装mongodb 安装包:https://www.mongodb.com/downl ...

  7. Nodejs使用robot操作鼠标键盘

    1.安装robotjs库 前提是配置了cnpm cnpm i robotjs -g   2.如果报错VCBuild.exe,如下可以安装windows-tool MSBUILD : error MSB ...

  8. nodejs使用sequelize操作mysql实例

    sequelize是node操作mysql的一款npm包,包含很多特性:数据库模型映射.事务处理.模型属性校验.关联映射等,花了两天时间学习了下基本的一些操作,特别是关联映射部分的操作,包含1:1.1 ...

  9. Nodejs文件相关操作

    欢迎关注我的博客我在马路边 适用人群 本文适用于刚接触Node的小白,毕竟我也是小白,大佬请绕行. Node文件操作 在实际开发中遇到很多有关文件及文件夹的操作,比如创建.删除文件及文件夹,文件拷贝. ...

随机推荐

  1. Linux终端录屏与播放 script 命令

    本文由Suzzz原创,发布于 http://www.cnblogs.com/Suzzz/p/4107700.html ,转载请保留此声明. 有时候可能想要记录在终端的所有操作包括输出等,将来作为视频播 ...

  2. JSON格式化以及转化为Entity事项

    其实JSON在eclipse里面就可以自动化,不需要再联网去进行格式化: 然后通过http://www.bejson.com/java2pojo/ 即可实现json转java   但是要注意:从str ...

  3. TLD视觉跟踪算法

    TLD算法好牛逼一个,这里有个视频,是作者展示算法的效果,http://www.56.com/u83/v_NTk3Mzc1NTI.html.下面这个csdn博客里有人做的相关总结,感觉挺好的,收藏了! ...

  4. Hot resize Multipath Disk – Linux

    This post is for the users of the great dm-multipath system in Linux, who encounter a major availabi ...

  5. java代码swing编程 制作一个单选按钮的Frame

    不善于思考,结果费了时间,也没有效果 下面的框框可以做出来. package com.kk; import javax.swing.JFrame; import javax.swing.JLabel; ...

  6. 高效C#编码优化

    1.foreach VS for 语句 Foreach 要比for具有更好的执行效率Foreach的平均花费时间只有for的30%.通过测试结果在for和foreach都可以使用的情况下,我们推荐使用 ...

  7. RabbitMQ 消息队列 安装及使用

    RabbitMQ 消息队列安装: linux版本:CentOS 7 安装第一步:先关闭防火墙 1.Centos7.x关闭防火墙 [root@rabbitmq /]# systemctl stop fi ...

  8. Flash 零日漏洞复现(CVE-2018-4878)

    项目地址:https://github.com/Sch01ar/CVE-2018-4878.git 影响版本为:Adobe Flash Player <= 28.0.0.137 攻击机器IP:1 ...

  9. oracle --(一)数据块(data Block)

    基本关系:数据库---表空间---数据段---分区---数据块 数据块(data Block)一.数据块Block是Oracle存储数据信息的最小单位.这里说的是Oracle环境下的最小单位.Orac ...

  10. 关于WebGIS开源解决方案的探讨(转)

    关于WebGIS开源解决方案的探讨   文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1.背景 公司目前的多数项目采 ...