《了不起的 nodejs》中 TwitterWeb 案例 bug 解决
了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落。
现在我们看一下第七章HTTP,一个 Twitter Web 客户端的例子。
先贴上书中源码
1.创建server.js
- var qs = require('querystring');
- require('http').createServer(function(req,res){
- var body ="";
- req.on('data',function(chunk){
- body += chunk;
- });
- req.on('end',function(){
- res.writeHead(200);
- res.end('Done');
- console.log('\n got name \033[90m' + qs.parse(body).name + '\033[39m\n');
- });
- }).listen(3000);
2.创建client.js
- var http = require('http'),
- qs = require('querystring');
- function send (theName){
- http.request({
- host: '127.0.0.1',
- port: 3000,
- url: '/',
- method:'POST'
- },function(res){
- res.setEncoding('utf8');
- res.on('end',function(){
- console.log('\n \033[90m request complete!\033[39m' );
- process.stdout.write('\n your name: ');
- });
- }).end(qs.stringify({name: theName}));
- }
- process.stdout.write('\n your name: ');
- process.stdin.resume();
- process.stdin.setEncoding('utf8');
- process.stdin.on('data',function(name){
- send(name.replace('\n', ''));
- });
很遗憾,最后出来的结果是这样子
效果非常不理想
问题出在哪里呢,和源码一样啊?
其实只需要将 client.js
中发送用户名的回调函数修改一下就可以了。
- var http = require('http'),
- qs = require('querystring');
- function send (theName){
- http.request({
- host: '127.0.0.1',
- port: 3000,
- url: '/',
- method:'POST'
- },function(res){
- res.setEncoding('utf8');
- /*==========新增代码=========*/
- res.on("data",function(chunk){
- //console.log(chunk);
- });
- /*==========================*/
- res.on('end',function(){
- console.log('\n \033[90m request complete!\033[39m' );
- process.stdout.write('\n your name: ');
- });
- }).end(qs.stringify({name: theName}));
- }
- process.stdout.write('\n your name: ');
- process.stdin.resume();
- process.stdin.setEncoding('utf8');
- process.stdin.on('data',function(name){
- send(name.replace('\n', ''));
- });
最终结果就是这样子
是不是很酷,虽然是一个很简单的小例子,不过对于初学者来说还是很有成就感的!
《了不起的 nodejs》中 TwitterWeb 案例 bug 解决的更多相关文章
- Kali Linux 2017中Scapy运行bug解决
Kali Linux 2017中Scapy运行bug解决 Scapy是一款强大的网络数据包构建工具.在Kali Linux 2017中,当在scapy的命令行中,运行res.graph()生成图形 ...
- 了不起的 nodejs-TwitterWeb 案例 bug 解决
了不起的nodejs算是一本不错的入门书,不过书中个别案例存在bug,按照书中源码无法做出和书中相同效果,原本兴奋的心情掺杂着些许失落. 现在我们看一下第七章HTTP,一个Twitter Web客户端 ...
- nodejs中express安装失败解决方法
http://jingyan.baidu.com/article/922554468a3466851648f419.html
- IE6中的常见BUG与相应的解决办法
开发前端的同学一定都知道,IE6是兼容BUG最多的浏览器,它不支持PNG alpha通道暂且不论.其文档的解析理解规范也引起了诸多恼人的BUG,有时甚至让人感到绝望.本文主要讲解一些比较容易遇到的IE ...
- 在TFS中通过程序动态创建Bug并感知Bug解决状态
为便于跟踪问题解决情况,预警引擎产生的比较严重的预警日志,需要在TFS中登记Bug,通过TFS的状态流转,利用TFS Bug的Web挂钩功能,动态感知Bug解决状态,从而跟踪预警问题的解决状态, 整体 ...
- 解决nodejs中json序列化时Date类型默认为UTC格式
在nodejs中,json序列化时Date类型时,默认转为UTC格式. 如下图 上面只是一个例子,下面我用一个更具体化的例子来展示一个这个情况,我们在开发WEB项目中,经常用到Express组件, 我 ...
- 解决nodejs中json序列化时Date类型为UTC格式
在nodejs中,json序列化时Date类型时,默认转为UTC格式. 如下图 zhupengfei@DESKTOP-HJASOE3 MINGW64 /d/MyProject/exp2 $ node ...
- nodeJS中的包
前面的话 Node组织了自身的核心模块,也使得第三方文件模块可以有序地编写和使用.但是在第三方模块中,模块与模块之间仍然是散列在各地的,相互之间不能直接引用.而在模块之外,包和NPM则是将模块联系起来 ...
- Nodejs中的路径问题
一.path核心模块 ①path.basename(path[,ext])获取一个路径中的文件名 var path=require('path'); console.log(path.basename ...
随机推荐
- (后端)Mybatis中#{}和${}传参的区别及#和$的区别小结(转)
原文地址:https://www.cnblogs.com/zqr99/p/8094234.html 最近在用mybatis,之前用过ibatis,总体来说差不多,不过还是遇到了不少问题,再次记录下, ...
- Scala之Calendar,SimpleDateFormat简单用法
package com.dingxin.entrance import java.text.SimpleDateFormat import java.util.{Calendar, Date} /** ...
- 通过http上下文判断是否是Ajax请求
using System; namespace System.Web.Mvc { /// <summary>Represents a class that extends the < ...
- Python比较(关系)运算符
比较(关系)运算符 运 算 符 作 用 举 例 结 果 > 大于 'a'>'b' False < 小于 156<456 True == 等于 'c' ...
- Linux CFS调度器之task_tick_fair处理周期性调度器--Linux进程的管理与调度(二十九)
1. CFS如何处理周期性调度器 周期性调度器的工作由scheduler_tick函数完成(定义在kernel/sched/core.c, line 2910), 在scheduler_tick中周期 ...
- echo 在shell及脚本中显示色彩及闪烁警告效果
在shell脚本编写中,echo用于输出字符串等提示信息,当我们需要格外显示色彩及闪烁效果如下: 一.在执行shell中显示色彩: 语法格式: echo -e "\033[颜色1:颜色2m ...
- java求解第N个素数(质数)
面试中,遇到一个题目:求解第N个素数. import java.util.Scanner; public class GetPrimeNumber { public static int NthPri ...
- Alpha阶段 - 博客链接合集
Alpha阶段 - 博客链接合集 项目Github地址 安卓端(Stardust):https://github.com/StardustProject/Stardust 服务器端(Gravel):h ...
- 【shell脚本】shell脚本实现的 函数差集查找
文本地址 点击关注微信公众号 wenyuqinghuai 分享提纲: 1. 问题背景 2. 代码实现 1.问题背景 在做公司的测试的自动化测试时,覆盖了一些开发代码的函数,但是那些还没有做,使用一个函 ...
- Linux 基本操作--文件查看 (day3)
一.查看文件-----cat (详情参考:http://blog.sina.com.cn/s/blog_52f6ead0010127xm.html) 语法结构: cat 查看方式 文件 cat -A ...