Node.js 将异步/等待与npm请求模块一起使用

Node.js 将异步/等待与npm请求模块一起使用,node.js,asynchronous,npm-request,Node.js,Asynchronous,Npm Request,我目前正在尝试使用npm请求模块发送一些请求。 普通的回调变量工作得很好,但我不能用async await做同样的事情 起初,我尝试使用“request-promise-native”模块实现,但我甚至无法运行一个普通的promise示例 var request = require('request-promise-native'); request(login) .then(function (response) { console.log("Post

我目前正在尝试使用npm请求模块发送一些请求。 普通的回调变量工作得很好,但我不能用async await做同样的事情

起初,我尝试使用“request-promise-native”模块实现,但我甚至无法运行一个普通的promise示例

var request = require('request-promise-native');
request(login)
        .then(function (response) {
            console.log("Post succeeded with status %d", response.statusCode);})
        .catch(function (err) {
            console.log("Error");
        });
我不确定我做错了什么,但是调用了.then函数,并且response属性完全为空。如果我查看webstorm调试,我只会看到giberisch� 在这个值之内。截图:

我的最终目标是像这样使用npm请求模块:

var结果=等待请求(登录)

结果要么是响应,要么是错误,如果不可能的话,我也可以使用promise-only变量

有人能告诉我我做错了什么或怎样做才是正确的吗

问候 鲁维

编辑:好的,我发现了第一个问题是什么。 我联系的服务器发送gzip信息,我需要在我的选项对象中输入gzip=true,现在我得到了一个可读的答案。 但我的问题没有解决:

如果我使用:

req(login, function(error, response, body){
        if (error)
         console.log(error);

        console.log(body);
        console.log(response.statusCode);
    });
我得到了完整的请求和响应对象。来自请求模块。 如果我使用:

 var result = await req(login);
我得到的结果是请求对象,但没有响应对象和响应头信息

这只返回响应体,只填充一个变量:

request(login)
        .then(function (response, body) {
            console.log(response);})
        .catch(function (err) {
            console.log("Error");
        });

如何获得承诺并等待返回整个请求+响应对象?

要获得完整的响应对象,必须添加:resolveWithFullResponse=true 传递给请求函数的选项对象

如果您使用:

var request = require('request-promise-native');

var result = await request(login);
//or
request(login)
        .then(function (response, body) {
            console.log(response);})
        .catch(function (err) {
            console.log("Error");
        });

两者都可以正常工作,并返回完整的请求/响应对象。

您是否尝试仅console.log
response
而不是
response.statusCode
?首先,打印响应并查看您收到的内容是的,如果我是console.log response,我会得到这个结果:�VJ-�P�保护责任�Q�非直瞄�J� ��@Ruvi你能用截图更新你的问题吗?似乎是一个编码问题,看看你是否能将响应编码设置为
utf8
,即使这样,我仍然看到响应为OP post