协议无效:未定义 - POST请求中的NodeJS错误 -

时间:2018-05-18 20:58:01

标签: javascript node.js request http-post aws-lambda

我收到此错误来自我的require.post(错误)
它是一个从流浪盒中部署的lambda函数。它是一个api的包装器,event.body有正确格式化的post json,当帖子从postman完成时,一切都很完美。

我已经看到了一个大致相似的问题
npm config set proxy http://usr:pwd@host:port
npm config set https-proxy http://usr:pwd@host:port

请帮忙! :)

Error: Invalid protocol: undefined
at Request.init (/var/task/node_modules/request/request.js:454:31)
at new Request (/var/task/node_modules/request/request.js:127:8)
at request (/var/task/node_modules/request/index.js:53:10)
at Function.post (/var/task/node_modules/request/index.js:61:12)
at module.exports.startVerifyProcess (/var/task/handler.js:83:13)

我的代码:

module.exports.startVerifyProcess = (event, context, callback) => {
    var body = JSON.parse(event.body);
    const params = querystring.parse(event.body);
console.warn(body);
var Re;

    var post_options = {
        host: 'api.demo.veri.com',
        path: '/api/v1/verify/requests',
        port: 443,
        method: 'POST',
        headers: {
           // 'Content-Type': 'application/json',
           // 'Content-Length': Buffer.byteLength(event.body),
            "Authorization": "myValidAuth",
        },           
    }

    request.post(post_options, body, function(err, res, resBody) {
            if (err){
                console.error(err);
            }

        console.warn("RESPONSE "  + resBody);
        });

    callback(null, {
        statusCode: 200,
        body: JSON.stringify({
            body: Re
        })
    });
}

1 个答案:

答案 0 :(得分:0)

这里的问题是请求不应将主体作为第二个参数。 request.post(post_options, function(err, res, resBody)是正确的,正文应位于post_options对象中。当您选择该项目中的所有内容时,请选择camelCase或snake_case。还要查看node-fetch,我认为它是使用请求的可靠升级。