web-dev-qa-db-ja.com

アプリでGETリクエストを実行するとECONNREFUSEDになるが、APIはJSONを正常に返す

バックエンドの呼び出しにnode-postgresとsuperagentを使用して、Reactでノードアプリを作成しています。 GETリクエストを作成し、JSONを使用して学生のテーブルに入力するとします。私のAPIは次のようになります。

import pg from 'pg';
import Router from 'express';
let router = new Router();
let conString = "postgres://user:pass@localhost/db_name";

router.get('/getStudents', function(req, res) {
  var results = [];

    pg.connect(conString, function(err, client, done) {
      if (err) {
       done();
       console.log(err);
       return res.status(500).json({success: false, data: err});
    }

    var query = client.query('SELECT first_name, last_name, email FROM students');

    query.on('row', function(row) {
      results.Push(row);
    });

    query.on('end', function() {
      done();
      return res.json(results);
    });
  });
});

ページの読み込み時に、これはストアから呼び出され、students配列を設定します。ここで何かがうまくいかないようです:

var request = require('super agent');

function getStudents() {
   request
     .get('/api/getStudents')
     .set('Accept', 'application/json')
     .end(function(err, res) {
       if (err) {
         console.log("There's been an error: getting students.");
         console.log(err);
       } else {
         return res;
       }
     });
 }

カールした場合localhost:3000/api/getStudents、期待どおりのJSON応答が返されます。

ただし、ページの読み込み時にこれを呼び出すと、ECONNREFUSEDエラーが発生します。

Error: connect ECONNREFUSED 127.0.0.1:80]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 80,
response: undefined

HTTPポートでエラーが発生する理由がわかりません。 node-postgres、superagent、およびReactを初めて使用するので、どんな助けにも感謝します。

編集: POSTリクエストを作成し、エラーなしでデータベースにアイテムを挿入できることを説明するのを忘れていました。このエラーは、 GETリクエスト。

11
johnprisco

getメソッドでこれを試してください(フルパスURLを挿入):

request
  .get('http://localhost:3000/api/getStudents')
  .set('Accept', 'application/json')
  .end(function(err, res) {
    if (err) {
      console.log("There's been an error: getting students.");
      console.log(err);
    } else {
      return res;
    }
  });

絶対URLの使用例については、CORSのドキュメントをご覧ください。

https://visionmedia.github.io/superagent/#cors

6
Quy

このエラーは、リクエストURLにプロトコルがない場合にも発生します。

代わりに

request.get('www.myexample.com/api/getStudents')

行う

request.get('https://www.myexample.com/api/getStudents')
             ^^^^^^^^
0
Kim Kern