4Manuals

  • PDF Cloud HOME

我的要求('end')没有触发。如何解决呢? Download

    CSS / JS-如何覆盖一个孩子而不是其他孩子的父母过渡 反应:更改方向后触发重新渲染和offsetWidth的重新计算 我的Javascript从'string'转换为'integer'或'number'无效 如何删除外部索引并合并内部json 在React Native 图片无法通过javascript刷新 如何在react图表上的datakey中操作DateTime 在Cypress中保存变量 如何从作为请求传递的输入类型数据绑定中提取数据 通过dropzone laravel通过电子邮件发送多个图像

我刚刚开始学习Node.js,我试图打印通过表单提交的输入的值。 @Scheduled(fixedRate = 1000) 始终会触发,而req.on('data')则不会触发。 请有人能告诉我怎么了吗?

下面可以找到我的完整代码

req.on('end')

2 个答案:

答案 0 :(得分:0)

经过一番研究,我发现出了什么问题。 req.on('end')事件处理函数只是被注册的,但由于它是异步的,所以没有被触发。因此,它进入下一个代码块:

res.setHeader('Content-Type', 'text/html');
res.write('<html>');
res.write('<head><title>My First Page</title></head>');
res.write('<body><h1>Hello from my Node.js Sever!</h1></body>');
res.write('</html>');
res.end();

这将阻止req.on('end')由于请求流已关闭而执行。

我应该做的是返回req.on('end')事件处理程序:

return req.on('end', () => {
    const parsedBody = Buffer.concat(body).toString();
    console.log(parsedBody);

    res.statusCode = 302;
    res.setHeader('Location', '/');
    return res.end();
});

这将阻止执行req.*语句之后的if (url === '/message' && method === 'POST')语句块。

答案 1 :(得分:0)

修改

原始答案仍然适用,但我错过了一件事:if块必须像原始帖子中那样返回-否则将运行它之后的响应操作,从而再次关闭req / res流。 / p>

返回或不返回事件处理程序没有什么区别。它不会影响执行,并且返回的值不会在任何地方使用。

因此,对于修订版:

    if (url === '/message' && method === 'POST') {
        // ...
        req.on('end', () => {
            const parsedBody = Buffer.concat(body).toString();
            console.log(parsedBody);

            res.statusCode = 302;
            res.setHeader('Location', '/');
            res.end();
        });
        return;

原始答案

我不是node http模块的专家,所以如果有人愿意填写,请这样做。那说:

两秒钟表示基础连接(实际的套接字,可能为其他请求而处于活动状态)超时。这很正常。

我想这里发生的事情是,由于您本质上是在耗尽请求流之前要求关闭响应流,因此即使有更多数据可用,请求流也会被关闭。请注意,实际的基础连接是双向的,并且结束响应传输意味着您对传入消息不再有兴趣。

要解决此问题,请将您的res.*调用移至'end'事件处理程序:

        req.on('end', () => {
            const parsedBody = Buffer.concat(body).toString();
            console.log(parsedBody);

            res.statusCode = 302;
            res.setHeader('Location', '/');
            res.end();
        });



Similar searches
    如何(在本地)将外部库导入ReactJS应用程序 比较txt文件中行中的整数 尝试快速启动Galaxy S8时“等待任何设备” 实现接口的类的虚拟表 为什么要继承Tk主窗口?