首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点环境和浏览器中的等效GET请求不显示相同的结果

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

Stack Overflow用户
提问于 2016-03-31 07:45:05
回答 1查看 64关注 0票数 1

我开始对node.js进行更深入的研究,并在白蚁中四处游玩。我正在使用GET节点包https://www.npmjs.com/package/got发出一个https://www.npmjs.com/package/got请求。

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

jQuery码

代码语言:javascript
复制
$.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);
 })

如我所料,这件事显示在妓院的控制台上--一切都很好。

然后,当我在节点环境中编写等效代码时,不会显示任何内容。

Node.js代码

代码语言:javascript
复制
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)
    console.log(showEmoji.grinning.char);
});

据我所知,节点确实识别这些表情符号--见截图。

有人能解释一下为什么结果不一样吗?我是不是错过了一些简单而明显的东西?

问题似乎与表情符号无关,就好像我试图将回调函数中的代码更改到下面一样,节点中仍然没有显示任何内容,但是浏览器控制台中显示了一个数组。

代码语言:javascript
复制
console.log(showEmoji.grinning.keywords);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-31 08:00:29

问题是data不是字符串,而是描述HTTP请求的富对象。此代码适用于:

代码语言:javascript
复制
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);
});

...but --您确实应该在您的承诺中添加.catch( ... )调用,以便在发生这种事情时提醒您。(也有一个常见的回调.done(),但got的承诺似乎不支持它。)

它不起作用的原因是JSON.parse函数失败了--但Node没有告诉您这一点,原因是.then()回调中的异常没有显示给用户。它们被存储并传递到.catch()回调中,或者在调用.done()时抛出。通常,您不应该在没有.then()存在的情况下使用.catch(),否则这种事情就会不断发生。

如果不需要所有这些显式处理,那将是很好的,但这是不可能的承诺库。也许本土的承诺将允许它在未来。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36327180

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档