gpt4 book ai didi

node.js - Nodeschool 的 Stream-Adventure #7 HTTP 服务器

转载 作者:太空宇宙 更新时间:2023-11-04 02:28:17 25 4
gpt4 key购买 nike

我在 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]);

我在验证时收到“not ok 3 success exit code”错误。所以我想了一些事情:

  • 也许我需要 res.end() -> 不起作用,并且其他测试都失败了
  • 也许我需要 this.queue 而不是 this.push()、next(),如 execice 所示。不起作用:对象没有队列方法。
  • 也许我需要在资源中添加状态代码,所以我输入:res.writeHead(200, { 'Content-Type': 'text/plain' });。相同的消息:“不行 3 成功退出代码”
  • 我尝试了代码here 。具有相似的结果(队列方法不可用)。
  • 我什至尝试了 learnyounode http uppercaserer exercice,结果是一样的。

现在,我看到了here几年前,这项练习出现了问题。真的正确吗?如果是,有人可以提示我做错了什么吗?

谢谢。

最佳答案

今天 sleep 后,我以清醒的头脑尝试再次掌握测试用例。所以我在

中看到了这一点
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();
});

当我将其放入代码中时,它终于起作用了。现在我终于检查了孤独,引用解决方案不起作用。正如我从问题描述中所预期的那样。不管怎样,我已经成功了,并且在这节课中学到了比我预期学到的更多的东西。希望这对某人有帮助。

编辑:

当我尝试为此打开问题报告 ( link ) 时,我意识到已经有一份关于此主题的报告 ( link )。真正的问题是,我试图将流冒险与旧版本的 Node (0.10.33) 一起使用,而这个问题在较新的 0.12.0 中不会发生(我写这篇文章的最新版本)。

关于node.js - Nodeschool 的 Stream-Adventure #7 HTTP 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28966576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com