从 atomicassets (wax.atomichub.io) 获取数据时,使用 discord.js 的 Node.js GET 错误

Posted

技术标签:

【中文标题】从 atomicassets (wax.atomichub.io) 获取数据时,使用 discord.js 的 Node.js GET 错误【英文标题】:Node.js GET error with discord.js when fetching data from atomicassets (wax.atomichub.io) 【发布时间】:2020-12-18 20:54:39 【问题描述】:

我正在尝试让一个不和谐的机器人在不和谐中发布一条消息,其中列出了从AtomicAssets 请求的一些 JSON。使用curl 可以正常工作,我会返回 JSON (curl "http://test.wax.api.atomicassets.io/atomicassets/v1/assets")

问题是当我运行我的机器人并告诉它获取 JSON 时,我收到以下错误消息:

Error: getaddrinfo ENOTFOUND https://test.wax.api.atomicassets.io/atomicassets
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:67:26) 
  errno: -3008,
  code: 'ENOTFOUND',
  syscall: 'getaddrinfo',
  hostname: 'https://test.wax.api.atomicassets.io/atomicassets'

为什么不能和curl一样做?

这是我的bot.js 文件的最小工作示例:

// stores API keys in separate JSON file
const  token  = require('./token.json');

// require the discord.js module
const Discord = require('discord.js');

// create a new Discord client
const bot = new Discord.Client();

// auth
bot.login(token);

bot.on('message', message => 

    // fetch AtomicAssets items
    else if (message.content === 'assets') 
        const http = require('http')
        const options = 
            hostname: 'http://test.wax.api.atomicassets.io/atomicassets',
            path: '/v1/assets',
            method: 'GET'
        

        const req = http.request(options, res => 
            console.log(`statusCode: $res.statusCode`)

            req.on('data', d => 
                process.stdout.write(d)
                return message.reply(d)
            )
        )

        req.on('error', error => 
            console.error(error)
        )

        req.end()
    
);

使用 Postman,我也得到 JSON 作为回报,所以我确定错误在我的代码中。

我也尝试过使用 AtomicAssets 的npm package,但无济于事。

非常感谢您的帮助!

【问题讨论】:

【参考方案1】:

我建议使用node-fetch 模块。用法很简单:

const fetch = require('node-fetch');

fetch('http://test.wax.api.atomicassets.io/atomicassets/v1/assets')
.then(res => res.json())
.then(json => console.log(json));

【讨论】:

【参考方案2】:
        const req = https.request(options, res => 
            console.log(`statusCode: $res.statusCode`)
/*           v  HERE */
            res.on('data', d => 
/*           ^   HERE*/
                process.stdout.write(d)
                return message.reply(d)
            )
        )

        req.on('error', error => 
            console.error(error)
        )

不应该是 "req" 而不是 "res" 吗? (如果它没有解决问题,请告诉我,所以我删除这个^^')

【讨论】:

好的,谢谢,我会试试,如果它有效,请告诉你 不,恐怕这没有成功@87message.author.username7

以上是关于从 atomicassets (wax.atomichub.io) 获取数据时,使用 discord.js 的 Node.js GET 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何从其他面板从 JTextField 获取输入

从PRISM开始学WPFMVVMViewModel?

在 python 中,为啥从数组读取比从列表读取慢?

从图库中挑选或从相机捕获的高质量图像

从PRISM开始学WPFMVVMCommand?

从PRISM开始学WPFPrism?