【问题标题】:How to migrate from request to axios如何从 request 迁移到 axios
【发布时间】:2020-09-27 17:49:57
【问题描述】:

我正在使用 [https://github.com/huobiapi/REST-Node.js-demo][1] 对于我与火币加密货币交易所的连接,但我遇到了一些错误,例如:

 (node:29550) Warning: a promise was rejected with a non-error: [object Undefined]

 GET /v1/account/accounts/15548622/balance
  { Error: ESOCKETTIMEDOUT
 at ClientRequest.<anonymous> (/home/ttr/node_modules/request/request.js:816:19)
 at Object.onceWrapper (events.js:285:13)
 at ClientRequest.emit (events.js:197:13)
 at TLSSocket.emitRequestTimeout (_http_client.js:668:40)
 at Object.onceWrapper (events.js:285:13)
 at TLSSocket.emit (events.js:197:13)
 at TLSSocket.Socket._onTimeout (net.js:447:8)
 at listOnTimeout (timers.js:324:15)
 at processTimers (timers.js:268:5) code: 'ESOCKETTIMEDOUT', connect: false }

我相信它们与文件有关:

  framework/httpClient.js

有一个过时的模块 “请求”可以更改为 axios 模块,这样我的错误可能会消失。

const http = require('http');
const request = require('request');
const moment = require('moment');
const logger = console;

var default_post_headers = {
    'content-type': 'application/json;charset=utf-8',
}

var agentOptions = {
    keepAlive: true,
    maxSockets: 256,
}

exports.get = function(url, options) {
   return new Promise((resolve, reject) => {
        options = options || {};
        var httpOptions = {
            url: url,
            method: 'get',
            timeout: options.timeout || 3000,
            headers: options.headers || default_post_headers,
            proxy: options.proxy || '',
            agentOptions: agentOptions
        }
        request.get(httpOptions, function(err, res, body) {
            if (err) {
                reject(err);
            } else {
                if (res.statusCode == 200) {
                    resolve(body);
                } else {
                    reject(res.statusCode);
                }
            }
        }).on('error', logger.error);
    });
}

exports.post = function(url, postdata, options) {
    return new Promise((resolve, reject) => {
        options = options || {};
        var httpOptions = {
            url: url,
            body: JSON.stringify(postdata),
            method: 'post',
            timeout: options.timeout || 3000,
            headers: options.headers || default_post_headers,
            proxy: options.proxy || '',
            agentOptions: agentOptions
        };
        request(httpOptions, function(err, res, body) {
            if (err) {
                reject(err);
            } else {
                if (res.statusCode == 200) {
                    resolve(body);
                } else {
                    reject(res.statusCode);
                }
            }
        }).on('error', logger.error);
    });
};

exports.form_post = function(url, postdata, options) {
    return new Promise((resolve, reject) => {
        options = options || {};
        var httpOptions = {
            url: url,
            form: postdata,
            method: 'post',
            timeout: options.timeout || 3000,
            headers: options.headers || default_post_headers,
            proxy: options.proxy || '',
            agentOptions: agentOptions
        };
        request(httpOptions, function(err, res, body) {
            if (err) {
                reject(err);
            } else {
                if (res.statusCode == 200) {
                    resolve(body);
                } else {
                    reject(res.statusCode);
                }
            }
        }).on('error', logger.error);
    });
};

到目前为止我试过了:

    return new Promise((resolve, reject) => {
        options = options || {};
        var httpOptions = {
            url: url,
            method: 'get',
            timeout: options.timeout || 3000,
            headers: options.headers || default_post_headers,
            proxy: options.proxy || '',
            agentOptions: agentOptions
        }
        axios.get(httpOptions, function(err, res, body) {
            if (err) {
                reject(err);
            } else {
                if (res.statusCode == 200) {
                    resolve(body);
                } else {
                    reject(res.statusCode);
                }
            }
        }).on('error', logger.error);
    });
} 

这样的解决方案,但似乎它们的工作方式不完全相同,所以没有工作。

 [1]: https://github.com/huobiapi/REST-Node.js-demo

【问题讨论】:

  • 您能与 adios 分享您遇到的错误吗?什么不完全正常。
  • 上面列出的错误 2 个不同的错误第一个总是第二个出现
  • Axios 似乎针对您的服务器的内部路径,这是预期的吗?或者它没有记录完整的 url 路径?

标签: javascript node.js request axios cryptocurrency


【解决方案1】:

我刚刚从模块中删除了 bluebird,错误消失了。

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 2021-05-30
    • 2022-11-11
    • 1970-01-01
    • 2023-02-07
    • 2018-06-23
    • 2021-07-18
    • 2019-11-11
    • 2018-10-28
    相关资源
    最近更新 更多