Ошибка прокси: Не удалось запросить прокси / api / с локального хоста: от 3000 до http://localhost: 5000 / - PullRequest
1 голос
/ 02 марта 2020

Я получаю эту ошибку всякий раз, когда пытаюсь использовать метод API POST.

Я добавил "proxy: "http://localhost:5000" в файл package.json в папке client.


server/models/submitted.js:

static insert(student_id, student_name, modules, callback) {
    db.query(
      `INSERT INTO returned (student_id), (student_name), (modules) VALUES ($1), ($2), ($3)`,
      [student_id], [student_name], [modules],
      function (e, res) {
        if (e.error) {
          return callback(e);
        }
        callback(res);
      }
    );
  }

server/api/submitted.js метод публикации:

router.post("/", function (req, res) {
  var id = req.body.id;
  var name = req.body.name;
  var modules = req.body.modules;

  Submitted.insert(id, name, modules, function (e, result) {
    if (e) {
      return res.json(e);
    }
    return res.json(result);
  });
});

client/App.js метод, вызывающий метод api/submitted POST:

  onSubmit = () => {
    fetch("api/submitted", {
      method: "POST",
      headers: { "Content-Type": "application/json" },
      body: JSON.stringify({
        student_id: this.state.id,
        student_name: this.state.name,
        modules: this.state.modulesSelected
      })
    })
      .then(res => res.json())
      .then(res => {
        console.log("posted:" + res);
        this.setState({ name: "", id: "", modulesSelected: [] });
      });
  };

Я попытался поиграться с "proxy: http://* в package.json безрезультатно.

package.json в папке root имеет следующее скрипты для разработки:

"scripts": {
    "dev": "concurrently \"npm run server\" \"npm run client\"",
    "client": "npm start --prefix client",
    "server": "nodemon server"
  }

Есть предложения? Пока все, что я пробовал из других потоков, не работает.


РЕДАКТИРОВАТЬ:

Я исправил проблему, изменив функцию insert на следующее:

static insert(student_id, student_name, modules, callback) {
    db.query(
      `INSERT INTO returned (student_id, student_name, modules) VALUES ($1,$2,$3)`,
      [student_id,
        student_name,
        modules
      ],
      function (e, res) {
        if (e.error) {
          return callback(e);
        }
        callback(null, res);
      }
    );
  }

Я также добавил try/catch, где insert называется:

  try {
    Submitted.insert(id, name, modules, function (e, result) {
      if (e) {
        return res.json(e);
      }
      return res.json(result);
    });
  } catch (error) {
    res.status(500).json({
      error: error.toString()
    })
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...