首页 > 解决方案 > 为什么我的 http 响应在我的请求负载的开头添加了 undefined?

问题描述

我有一个 node.js 服务器响应并通过电子邮件输入 http 请求。当我收到请求有效负载时,我会收到开头未定义的意向电子邮件输入:“undefinedcrosati@gmail.com”

我的服务器路由如下所示:

else if (request.url === '/email'){
    var email_Addr
    request.on('data', (data)=>{ // adding chunks of data to request body
        email_Addr += data.toString();
        console.log('server stream email', email_Addr) // results in "undefinedcrosati@gmail.com"
    });
    request.on('end',(data)=>{
        console.log(email_Addr) // results in "undefinedcrosati@gmail.com"
        emailData(email_Addr)
    });

    response.write('Email Data')
    response.end(email_Addr)
}

在客户端应用程序上,我可以在 chrome 开发工具中看到我打算发送的 http 标头,例如:crosati@gmail.com。

由于我只是将缓冲区转换为字符串,因此我没有对数据做任何其他事情。这里发生了什么?

标签: node.jshttpxmlhttprequest

解决方案


email_Addr如果要将字符串附加到变量,请将变量定义为空字符串:

var email_Addr = '';

否则,该变量是undefined,如果您将其视为字符串,Node 会将变量转换为字符串“未定义”。


推荐阅读