我在Nodeschool的流冒险练习#7 - Http服务器上做错了。这是一个练习说明gist。
这是我到目前为止所做的代码:
var http = require('http');
var through = require('through2');
var server = http.createServer(function (req, res) {
if (req.method != 'POST')
return;
var stream = through(function write(buffer, encoding, next) {
this.push(buffer.toString().toUpperCase());
next();
});
req.pipe(stream).pipe(res);
});
server.listen(process.argv[2]);
我得到了一个"不成功的3个成功的退出代码"验证错误。所以我虽然有些事情:
res.writeHead(200, { 'Content-Type': 'text/plain' });
。相同的消息:"不行,3个成功的退出代码" 现在,我已经看到here几年前这个练习存在问题。这是真的吗? 如果是的话,有人能给我一个关于我做错的提示吗?
感谢。
答案 0 :(得分:0)
今天睡觉后,头脑清醒,我试着再次掌握测试用例。所以我在
中看到了ps.once('exit', function (code) {
t.equal(Number(code), 0, 'successful exit code');
});
它期望成功返回(0)。我把console.log(code)
放进去了,它出来了143(SIGTERMed流程)。这是因为第48行(ps.kill)杀死了
这个过程。所以我将测试代码从预期的0改为143.并且它成功了。但即使看到它成功,我仍然没有看到解决方案。我想
使原始测试代码工作。所以我谷歌了一下,发现了这个:
process.on('SIGTERM', function() {
process.exit();
});
当我把它放在代码中时它最终起作用了。现在我终于检查了解决方案和参考解决方案DIDN&T; T工作。正如我对问题的描述所期望的那样。 无论如何,我已经完成了它,并且学到的东西远远超过了我应该通过本课学到的东西。希望这有助于某人。
修改强>
当我尝试为此(link)打开问题报告时,我意识到已经有关于此主题的报告(link)。真正的问题是我试图使用旧版本的Node(0.10.33)进行流式冒险,而这个问题并没有发生在较新的0.12.0中(最新的,因为我写这个)。