Node.js请求返回错误: connect ECONNREFUSED when set options parameter

标签 node.js npm-request

如果我使用带有必需属性的 url 作为第一个参数发送请求,则请求工作正常,但每次尝试使用包含请求属性的选项对象参数发送时都会失败:

"use strict"
var https = require('https'),
    request = require('request');

var obj = {
    translate: function(textToTranslate) {
        var options = {
            url: "https://translate.yandex.net/api/v1.5/tr.json/translate",
            qs: {
                key: process.env.TRANSLATION_APP_TOKEN,
                lang: "en-ru",
                text: textToTranslate
            }
        }, translationRequest = https.request(options, function(response) {
            response.on('data', function (chunk) {
                console.log(JSON.parse(chunk).text[0]);
            });
        });
        console.log(options);

        translationRequest.on('error', function (response) {
            console.log(response);
        });

        translationRequest.end();
    }
};

obj.translate("hello");

我使用 qs 选项来传递参数,但尝试了 formData 和 body,但效果不佳。

感谢您的帮助

最佳答案

这对我有用,使用 request 模块(您已经加载)而不是 https。并根据the docs ,您需要通过 GET 请求将这些参数作为查询参数传递(因此 POST 表单数据将不起作用):

"use strict"
var https = require('https'),
    request = require('request');

var obj = {
    translate: function(textToTranslate) {
        var options = {
            url: "https://translate.yandex.net/api/v1.5/tr.json/translate",
            qs: {
                key: "<redacted>",
                lang: "en-ru",
                text: textToTranslate
            }
        }
        request.get(options, function(e, r, body) {
            console.log(body);
        });
    }
};

obj.translate("hello");

使用有效 key 针对 API 进行测试,并得到以下响应:

{"code":200,"lang":"en-ru","text":["привет"]}

就其值(value)而言,它不像您使用 optionshttps 模块那样工作的原因是因为这是为请求而不是https。要使 https 正常工作,您需要遵循该架构:

options = {
    hostname: "translate.yandex.net",
    path: "/api/v1.5/tr.json/translate?key=" + process.env.TRANSLATION_APP_TOKEN + "&lang=en-ru&text=" + textToTranslate
}

(文档:https://nodejs.org/api/http.html#http_http_request_options_callback)

关于Node.js请求返回错误: connect ECONNREFUSED when set options parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31547397/

相关文章:

node.js - 使用 OpsWorks 在 AWS Linux 上安装hiredis 时出现问题

node.js - "type": "module" in package. json 抛出新的 ERR_REQUIRE_ESM(文件名,parentPath,packageJsonPath)

ssl - 在我的 browserify React 应用程序中获取 DEPTH_ZERO_SELF_SIGNED_CERT

javascript - 范围问题(NodeJS - "request"包)

javascript - 为什么 setInterval() 会给出循环引用?

javascript - sequelize 验证多列 [this.column got undefined]

node.js - 如何使用 Docker 在我的 CI 中运行 jshint

javascript - Node - npm-request 中的无效 uri 错误

javascript - 如何将json传递给nodejs请求post方法?

node.js - 使用 Node 请求和 URL 扫描从 CSV 下载图像