簡體   English   中英

node.js 錯誤:連接 ECONNREFUSED; 來自服務器的響應

[英]node.js Error: connect ECONNREFUSED; response from server

這個小程序有問題:

var http = require("http");
var request = http.request({
    hostname: "localhost",
    port: 8000,
    path: "/",
    method: "GET"
}, function(response) {
    var statusCode = response.statusCode;
    var headers = response.headers;
    var statusLine = "HTTP/" + response.httpVersion + " " +statusCode + " " + http.STATUS_CODES[statusCode];
    console.log(statusLine);
    for (header in headers) {
        console.log(header + ": " + headers[header]);
    }
    console.log();
    response.setEncoding("utf8");
    response.on("data", function(data) {
        process.stdout.write(data);
    });
    response.on("end", function() {
        console.log();
    });
});

控制台中的結果是這樣的:

events.js:141
      throw er; // Unhandled 'error' event
      ^

Error: connect ECONNREFUSED 127.0.0.1:8000
    at Object.exports._errnoException (util.js:870:11)
    at exports._exceptionWithHostPort (util.js:893:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1063:14)

我不明白為什么會這樣。

從您的代碼來看,您的文件似乎包含向 localhost (127.0.0.1:8000) 發出 get 請求的代碼。

問題可能是您沒有在本地計算機上創建服務器來偵聽端口 8000。

為此,您必須在 localhost 上設置可以滿足您的請求的服務器。

  1. 創建 server.js

     var express = require('express'); var app = express(); app.get('/', function (req, res) { res.send('Hello World!'); // This will serve your request to '/'. }); app.listen(8000, function () { console.log('Example app listening on port 8000!'); });
  2. 運行 server.js :節點 server.js

  3. 運行包含發出請求的代碼的文件。

請使用 [::1] 代替 localhost,並確保端口正確,並將端口放在鏈接中。

const request = require('request');

   let json = {
        "id": id,
        "filename": filename
    };
    let options = {
        uri: "http://[::1]:8000" + constants.PATH_TO_API,
        // port:443,
        method: 'POST',
        json: json
    };
    request(options, function (error, response, body) {
        if (error) {
            console.error("httpRequests : error " + error);
        }
        if (response) {
            let statusCode = response.status_code;
            if (callback) {
                callback(body);
            }
        }
    });

我用redis-server解決了這個問題,你可以這樣安裝!

sudo apt-get install redis-server

之后查看端口並更改它!

我在我的 mac 上遇到了同樣的問題,但就我而言,問題是我之前沒有運行數據庫(sudo mongod); 當我第一次在控制台上運行 mondo sudod 時,問題就解決了,一旦完成,在另一個控制台上,與服務器的連接......

只需在節點項目中運行以下命令:

npm install

它對我有用。

我運行了本地 mysql 數據庫,但不是在管理員模式下,這引發了這個錯誤

如果您已經從任務管理器中停止了 mongod.exe 服務,則需要重新啟動該服務。 就我而言,我從任務管理器中停止了該服務,並且在重新啟動時它不會自動啟動。

我收到這個錯誤是因為我的 AdonisJS 服務器在我運行測試之前沒有運行。 運行服務器首先修復它。

只需在節點項目中運行以下命令

npm install 它為我工作

如果這是連接到redis 服務器的問題(如果您的 redis.createClient function 不起作用,盡管您確定在另一個功能屏幕中寫入了正確的參數到redis-server )。 這可能會解決問題。

PS:對不起,如果這是一個重復的答案,但沒有接受的答案,所以,我也想分享我的解決方案。

停止 nodemon 並重新啟動它。

這是非常輕微的錯誤。 當我在 nodejs 上的進程之間實現事件服務器時。

只需檢查您用於運行服務器的軟件包,例如Axios

也許您可能已經重新定位了文件或斷開了瀏覽器上的一些緩存數據。

很簡單,在您的相關目錄中運行以下命令

我正在使用 axios,所以我使用了

npm i axios

重啟服務器

npm start

這將起作用。

在您的代碼中使用代理屬性它應該可以正常工作

const https = require('https');
const request = require('request');

request({
    'url':'https://teamtreehouse.com/chalkers.json',
    'proxy':'http://xx.xxx.xxx.xx'
    },
    function (error, response, body) {
        if (!error && response.statusCode == 200) {
            var data = body;
            console.log(data);
        }
    }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM