jaggedsoft / node-binance-api

Node Binance API is an asynchronous node.js library for the Binance API designed to be easy to use.
MIT License
1.57k stars 767 forks source link

Getting issue ERR_INVALID_ARG_VALUE #819

Open Sadmansamee opened 2 years ago

Sadmansamee commented 2 years ago

Whenever I try to call any API I get this error

TypeError [ERR_INVALID_ARG_VALUE]: The property 'options.family' must be one of: 0, 4, 6. Received false

2022-04-26T16:02:13.318271+00:00 app[web.1]:     at lookup (node:dns:143:7)
2022-04-26T16:02:13.318271+00:00 app[web.1]:     at node:net:1082:5
2022-04-26T16:02:13.318272+00:00 app[web.1]:     at defaultTriggerAsyncIdScope (node:internal/async_hooks:463:18)
2022-04-26T16:02:13.318273+00:00 app[web.1]:     at lookupAndConnect (node:net:1081:3)
2022-04-26T16:02:13.318273+00:00 app[web.1]:     at Socket.connect (node:net:1019:5)
2022-04-26T16:02:13.318273+00:00 app[web.1]:     at Object.connect (node:_tls_wrap:1660:13)
2022-04-26T16:02:13.318274+00:00 app[web.1]:     at Agent.createConnection (node:https:142:22)
2022-04-26T16:02:13.318274+00:00 app[web.1]:     at Agent.createSocket (node:_http_agent:343:26)
2022-04-26T16:02:13.318274+00:00 app[web.1]:     at Agent.addRequest (node:_http_agent:294:10)
2022-04-26T16:02:13.318275+00:00 app[web.1]:     at new ClientRequest (node:_http_client:311:16)
2022-04-26T16:02:13.318275+00:00 app[web.1]:     at Object.request (node:https:352:10)
2022-04-26T16:02:13.318275+00:00 app[web.1]:     at Object.<anonymous> (/app/node_modules/agent-base/patch-core.js:25:22)
2022-04-26T16:02:13.318276+00:00 app[web.1]:     at Object.request (/app/node_modules/socks-proxy-agent/node_modules/agent-base/patch-core.js:23:20)
2022-04-26T16:02:13.318277+00:00 app[web.1]:     at Request.start (/app/node_modules/request/request.js:751:32)
2022-04-26T16:02:13.318277+00:00 app[web.1]:     at Request.end (/app/node_modules/request/request.js:1505:10)
2022-04-26T16:02:13.318278+00:00 app[web.1]:     at end (/app/node_modules/request/request.js:564:14)
2022-04-26T16:02:13.318278+00:00 app[web.1]:     at Immediate.<anonymous> (/app/node_modules/request/request.js:578:7)
2022-04-26T16:02:13.318278+00:00 app[web.1]:     at process.processImmediate (node:internal/timers:471:21) {
2022-04-26T16:02:13.318279+00:00 app[web.1]:   code: 'ERR_INVALID_ARG_VALUE'
2022-04-26T16:02:13.318281+00:00 app[web.1]: } TypeError [ERR_INVALID_ARG_VALUE]: The property 'options.family' must be one of: 0, 4, 6. Received false at 4/26/2022, 4:02:13 PM in prod
olegkamzin commented 2 years ago

I have the same problem. It seems to be related to dns.lookup. I don't know how to solve it yet.

Sadmansamee commented 2 years ago

yeah, it works from my local, but creates issue whenever I deployed it on server.

Sadmansamee commented 2 years ago

@olegkamzin have you found any solution?

olegkamzin commented 2 years ago

@Sadmansamee I have this problem only on version 18. On this version, the application does not run at all. On 17.9 everything works, only an error crashes at startup.

Снимок экрана 2022-05-01 в 14 59 07

While I'm working like this)

Sadmansamee commented 2 years ago

Thanks after downgrading node version it works fine.

lpoirothattermann commented 2 years ago

Error only happen with node.js 18.

ptravassos commented 2 years ago

Have you found any solution?

Silvano-789 commented 2 years ago

Any solution for this issue?

cmartin81 commented 2 years ago

Any updates?

lpoirothattermann commented 2 years ago

Downgrade your node version, this error only happens with node 18

cmartin81 commented 2 years ago

That is ok for now, but not in the long run.

luiztools commented 1 year ago

Any news about this error?

Sadmansamee commented 1 year ago

downgrade

luiztools commented 1 year ago

I found a better solution than downgrade. At the Binance object constructor, you can specify the property 'family' in the options object, with 0, 4 or 6, as mentioned in the error, referring to IPv4+6, IPv4 and IPv6, respectively. The option default is false, that is incompatible with Node 18's dns lookup.

nichitagutu commented 1 year ago

Is there any reason why the above solution still wasn't introduced into the code base?

naimayz commented 1 year ago

I found a better solution than downgrade. At the Binance object constructor, you can specify the property 'family' in the options object, with 0, 4 or 6, as mentioned in the error, referring to IPv4+6, IPv4 and IPv6, respectively. The option default is false, that is incompatible with Node 18's dns lookup.

As suggested by @luiztools, it works. I use Node 18 and did modify the 'family' options to 4 which is IPV4(my internet provider support IPV4). You guys can try to change the number to 0, 4 or 6 Here is my sample code

const Binance = require('node-binance-api');
const binance = new Binance().options({
    APIKEY: '<YOUR-APIKEY>',
    APISECRET: '<YOUR-APISECRET>',
    'family': 4,
});

async function main() {
    binance.websockets.depthCache(['BNBBUSD'], (symbol, depth) => {
        let bids = binance.sortBids(depth.bids);
        let asks = binance.sortAsks(depth.asks);
        console.info(symbol+" depth cache update");
        console.info("bids", bids);
        console.info("asks", asks);
        console.info("best bid: "+binance.first(bids));
        console.info("best ask: "+binance.first(asks));
        console.info("last updated: " + new Date(depth.eventTime));
    });
}
main();
Alphadan28 commented 1 year ago

I found a better solution than downgrade. At the Binance object constructor, you can specify the property 'family' in the options object, with 0, 4 or 6, as mentioned in the error, referring to IPv4+6, IPv4 and IPv6, respectively. The option default is false, that is incompatible with Node 18's dns lookup.

As suggested by @luiztools, it works. I use Node 18 and did modify the 'family' options to 4 which is IPV4(my internet provider support IPV4). You guys can try to change the number to 0, 4 or 6 Here is my sample code

const Binance = require('node-binance-api');
const binance = new Binance().options({
    APIKEY: '<YOUR-APIKEY>',
    APISECRET: '<YOUR-APISECRET>',
    'family': 4,
});

async function main() {
    binance.websockets.depthCache(['BNBBUSD'], (symbol, depth) => {
        let bids = binance.sortBids(depth.bids);
        let asks = binance.sortAsks(depth.asks);
        console.info(symbol+" depth cache update");
        console.info("bids", bids);
        console.info("asks", asks);
        console.info("best bid: "+binance.first(bids));
        console.info("best ask: "+binance.first(asks));
        console.info("last updated: " + new Date(depth.eventTime));
    });
}
main();

this solved the problem on my case using node v18.12.1

YoleYu commented 11 months ago

I found a better solution than downgrade. At the Binance object constructor, you can specify the property 'family' in the options object, with 0, 4 or 6, as mentioned in the error, referring to IPv4+6, IPv4 and IPv6, respectively. The option default is false, that is incompatible with Node 18's dns lookup.

As suggested by @luiztools, it works. I use Node 18 and did modify the 'family' options to 4 which is IPV4(my internet provider support IPV4). You guys can try to change the number to 0, 4 or 6 Here is my sample code

const Binance = require('node-binance-api');
const binance = new Binance().options({
    APIKEY: '<YOUR-APIKEY>',
    APISECRET: '<YOUR-APISECRET>',
    'family': 4,
});

async function main() {
    binance.websockets.depthCache(['BNBBUSD'], (symbol, depth) => {
        let bids = binance.sortBids(depth.bids);
        let asks = binance.sortAsks(depth.asks);
        console.info(symbol+" depth cache update");
        console.info("bids", bids);
        console.info("asks", asks);
        console.info("best bid: "+binance.first(bids));
        console.info("best ask: "+binance.first(asks));
        console.info("last updated: " + new Date(depth.eventTime));
    });
}
main();

this solved the problem on my case using node v18.12.1

this works with node v20