(404) Ошибка при попытке сохранить данные с конечной точкой маршрута - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь сохранить пользовательские данные, когда они регистрируются.Я использую простую форму в реакции.Узел / экспресс для серверной части.

Я получаю ошибку 404 не найдена.

Предостережение -

В пакете моего клиента есть прокси-сервер, настроенный на порт сервера:

"proxy": "http://localhost:5000"

, и мой клиент работает на порту 3000 (яс использованием create-реагировать-приложение)

Вот логика формы:

    createUser(e) {
        e.preventDefault();
        const newUser = {
            name: this.state.name,
            password: this.state.password,
            zip: this.state.zip
        }

        axios.post('./api/users/register', newUser)
            .then(res => console.log(res.data))
            .catch(err => console.log(err))
    }

Вот логика маршрута из бэкэнда:

router.post('/register', (req, res) => {
    // const { errors, isValid } = validateRegisterInput(req.body);

    // // Check Validation
    // if (!isValid) {
    //   return res.status(400).json(errors);
    // }

    // User.findOne({ name: req.body.name }).then(user => {
    //   if (user) {
    //     errors.name = 'Name already exists';
    //     return res.status(400).json(errors);
    //   } else {

        const newUser = new User({
          name: req.body.name,
          password: req.body.password,
          zip: req.body.zip
        });

        newUser
          .save()
          .then(user => res.json(newUser))
          .catch(err => console.log(err));

        // bcrypt.genSalt(10, (err, salt) => {
        //   bcrypt.hash(newUser.password, salt, (err, hash) => {
        //     if (err) throw err;
        //     newUser.password = hash;
        //     newUser
        //       .save()
        //       .then(user => res.json(newUser))
        //       .catch(err => console.log(err));
        //   });
        // });
      //}
  //   });
  });

И этоошибка, которую я получаю из браузера:

xhr.js:178 POST http://localhost:3000/api/users/register 404 (Not Found)

Error: Request failed with status code 404
at createError (createError.js:16)
at settle (settle.js:18)
at XMLHttpRequest.handleLoad (xhr.js:77)

Я понимаю, что, хотя я вижу ошибку для

http://localhost:3000/api/users/register

, что мой прокси-сервер все еще действует.В соответствии с этим обсуждением здесь: https://github.com/facebook/create-react-app/issues/1219

--- Комментарий этого обсуждения:

"Похоже, вы получаете 400 ОШИБК. Разве это не означает запросполучает прокси (но сервер по какой-то причине дает сбой)?

Похоже, что запрос к порту 3000 в браузере является точкой прокси-функции. Это необходимо, чтобы браузер позволял нам делать запрос безвключение CORS на этом сервере. Однако фактический запрос передается через прокси, так что пока вы видите его как запрос до 3000Вместо этого CRA направит его на порт 8080, который не будет обнаружен самим приложением. "

1 Ответ

0 голосов
/ 22 мая 2018

Я также получаю ту же ошибку в прошлом месяце.

Но я решаю это, вызывая My server.js (app.js) в экспресс, я думаю, что вы будетеполучите это, если вы сделаете это

см. мой код ниже

`axios.post('/sqladd',{
            year : this.state.year,
            multi : this.state.multiyear
           }).then(function(response){
            // window.alert("Data Inserted to SQL DB !");
            // window.location.href = "http://localhost:3000/";
           }).catch(function(error){
            //toastr.clear();
            //toastr.error(error);
           });`

это отправляет данные в базу данных, которая находится в файле реакции (папка клиента)

var control =require("./controllers/framcontroller.js");

app.post('/sqladd',control.farm_add);

он находится на сервере, значит в папке express (файл app.js)

Поскольку я использую контроллер, мне дан путь в качестве имени элемента управления

module.exports.farm_add = (req,res)=>{ 
 let year = req.body.year;
 let multi = req.body.multi;
 let post = {name:year, address:multi};
 let sql = 'INSERT INTO customers SET ?';
 let query = con.query(sql,post,(err,result)=>{
  if(err) throw err;
  console.log(result);
  res.send('New data added..');
});

это моя операция с базой данных.

если возникнет какая-либо другая проблема, дайте мне знать

Спасибо

...