Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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不能正确解析以下页面?_Javascript_Node.js - Fatal编程技术网

Javascript 为什么Node.js不能正确解析以下页面?

Javascript 为什么Node.js不能正确解析以下页面?,javascript,node.js,Javascript,Node.js,如果我访问以下页面(我知道凭据无效): 在浏览器中,我得到格式良好的JSON: { "error": { "code": "request_token_invalid", "message": "The access token isn't valid." } } 但是,如果我尝试这样做,则等效的是Node.js var request = require('https').request({ host: 'apis.live.

如果我访问以下页面(我知道凭据无效):

在浏览器中,我得到格式良好的JSON:

{
   "error": {
      "code": "request_token_invalid", 
      "message": "The access token isn't valid."
   }
}
但是,如果我尝试这样做,则等效的是Node.js

    var request = require('https').request({

        host: 'apis.live.net',
        port: 443,
        path: '/v5.0/me/contacts?access_token=' + 'dummy',
        method: 'GET'
    },

    function (httpsres) {
        var contacts = '';
        httpsres.on('data', function (result) {
            contacts += result;
        });

        httpsres.on('end', function () {
            console.log(contacts);
        });

    });

    request.end();
输出损坏如下所示:

}  }  "message": "The access token isn't valid."

如何修改程序,使输出与浏览器的结果相匹配?

输出使用
\r
(回车)作为行分隔符。Unix标准是
\n
(换行),而Windows标准是
\r\n
(CR/LF)。当您自己打印出
\r
时,它会将光标返回到行首,但不会前进到下一行,任何其他文本都将覆盖您刚才打印的内容

具体而言:

{\r
   "error": {\r
      "code": "request_token_invalid", \r
      "message": "The access token isn't valid."\r
   }\r
}
前四行完全覆盖了彼此。打印“消息”行后,前五个字符被
}
覆盖;然后第一个字符被
{
覆盖

您的回答很好;打印错误。若要查看输出的真实情况,请尝试将代码管道化为
less
,它将
\r
显示为
^M
,或管道化为
hextump-C
,它将显示
0d
(而不是
\n
通常的
0a

在打印前插入以下内容:

contacts = contacts.replace(/\r/g, "\n");

它将被修复。

这看起来可疑,好像接收到的数据没有正确的行尾,无法在控制台上正确显示(原始CR字符或类似字符)。还可以尝试打印出
内容的长度,看看是否合理。