Javascript 节点环境和浏览器中的等效GET请求未显示相同的结果

Javascript 节点环境和浏览器中的等效GET请求未显示相同的结果,javascript,ajax,node.js,Javascript,Ajax,Node.js,我开始更深入地研究node.js,并在termianl中进行研究。我正在使用GET节点包发出GET请求 下面是我在浏览器中使用jquery和在终端中使用got的代码 jQuery代码 $.get('https://raw.githubusercontent.com/notwaldorf/emoji-translate/master/bower_components/emojilib/emojis.json', function (data) { var showEmoji = JSON.p

我开始更深入地研究node.js,并在termianl中进行研究。我正在使用
GET
节点包发出
GET
请求

下面是我在浏览器中使用
jquery
和在终端中使用
got
的代码

jQuery代码

$.get('https://raw.githubusercontent.com/notwaldorf/emoji-translate/master/bower_components/emojilib/emojis.json', function (data) {
   var showEmoji = JSON.parse(data)
   console.log(showEmoji.grinning.char);
 })

这将显示
问题在于
数据
不是字符串,而是描述HTTP请求的富对象。此代码适用于:

var got = require("got");
var url = 'https://raw.githubusercontent.com/notwaldorf/emoji-translate/master/bower_components/emojilib/emojis.json'
got(url).then(function(data){
    var showEmoji = JSON.parse(data.body);
    console.log(showEmoji.grinning.char);
});
…但是你真的应该在你的承诺中加入
.catch(…)
调用,当这种事情发生时提醒你。(还有一个常见的回调
.done()
,但是
got
的承诺似乎不支持它。)

它不起作用的原因是
JSON.parse
函数失败了,但节点没有告诉您这一点的原因是
.then()
回调中的异常没有显示给用户。它们被存储并传递到
.catch()
回调中,或者在调用
.done()
时抛出。一般来说,如果没有
.catch()
存在于某个地方,就不应该使用
.then()
,否则这种事情会继续发生


如果不需要所有这些显式处理,那将是一件好事,但这在promise库中是不可能的。也许native Promissions将来会允许它。

您可以尝试
console.log吗("请参见附件中的屏幕截图您在控制台中使用的字体不支持表情符号?@KrzysztofSafjanowski为什么要进行此编辑?@KrzysztofSafjanowski这不是OP代码…OP也不是关于jQuery而是关于nodejst的,谢谢!但是,我仍然不明白为什么相同的请求在浏览器和终端中的工作方式不同。它看起来没有返回相同的数据。如果返回
console.log(数据类型)
在终端中返回object,但在浏览器中返回
string
@Andrew Taylor,你能解释一下为什么它在node中返回
object
,而在浏览器中返回
string
吗?@PaulFitzgerald请求的工作原理完全相同-不同之处在于你在浏览器中使用jQuery,并且在node上使用jQuery。jQuery是专业的编程返回正文文本,因为它的开发人员可能认为这对您最有帮助,而Got的开发人员显然认为您可能需要更多关于请求的信息,因此编程提供了这些信息。两者都没有错——您只需要确保您的代码是正确的。