Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用node.js从Google Cloud函数中的IncomingMessage对象读取正文_Javascript_Node.js_Google Cloud Functions - Fatal编程技术网

Javascript 使用node.js从Google Cloud函数中的IncomingMessage对象读取正文

Javascript 使用node.js从Google Cloud函数中的IncomingMessage对象读取正文,javascript,node.js,google-cloud-functions,Javascript,Node.js,Google Cloud Functions,我有一个基于node.js 8的谷歌云函数,我想处理IncomingMessage对象的主体。我无法通过中列出的req.body访问正文。我得到req.body未定义 如果我记录req对象,我会得到一个IncomingMessage对象,因此我尝试按照说明读取主体,并以以下实现结束 'use strict'; exports.insertSuccessfulConsent = (req, res) => { console.log(`METHOD: ${req.method}`)

我有一个基于node.js 8的谷歌云函数,我想处理
IncomingMessage
对象的主体。我无法通过中列出的
req.body
访问正文。我得到
req.body
未定义

如果我记录
req
对象,我会得到一个
IncomingMessage
对象,因此我尝试按照说明读取主体,并以以下实现结束

'use strict';

exports.insertSuccessfulConsent = (req, res) => {
    console.log(`METHOD: ${req.method}`);
    console.log(`HEADERS: ${JSON.stringify(req.headers)}`);

    let body = "";

    req.on('data', chunk => {
        body += chunk.toString(); 
    });

    req.on('end', () => {
        console.log(body);
    });

    console.log('Body: ' + body); 


    let message = 'POST processed';
    res.status(200).send(message);
};
不幸的是,正文是空的,尽管HTTP POST请求的正文中有数据。这是我的测试电话:

curl-X POST-HTTP\u TRIGGER\u ENDPOINT-H“内容类型:application/json”-d'{“name”:“Jane”}'

日志中的头和HTTP方法正确,只缺少正文


问题是:如何从req对象获取主体?

我不确定,但在Google编写的示例中,他们引用了
Express
,而您引用了一个解决NodeJS plain
http
模块问题的解决方案。我不确定它是否适合这里,尽管
express
本身正在使用它

“数据”事件的侦听器是否被调用?如果不是,这就是您的
正文
为空的原因,您之前将其定义为空,并且您的侦听器从未被
数据
事件调用

您的
请求数据
被设置为
未定义
的原因可能是因为它在
Express
中默认为
未定义
。您将需要一个解析器,正如
express
在其上指出的那样

您可以使用类似模块的东西来填充
req.body

我希望有帮助