为什么我的http响应会在请求有效内容的开头添加未定义的内容?

时间:2018-10-31 13:34:40

标签: node.js http xmlhttprequest

我有一个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 dev工具中的http标头,例如我打算发送给它的标头:crosati@gmail.com。

由于我只是将缓冲区转换为字符串,因此对数据不做任何其他操作。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

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

var email_Addr = '';

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