(404)尝试使用路径端点存储数据时出错

时间:2018-05-21 23:03:30

标签: node.js reactjs express axios

我正在尝试在注册时存储用户数据。我正在使用一个简单的形式进行反应。节点/表达后端。

我收到404找不到错误。

买者 -

我的客户端的package.json中有一个代理设置到我的服务器端口:

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

我的客户端在端口3000上运行(我正在使用create-react-app)

以下是表单逻辑:

    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 ERROR。这是不是意味着请求被代理(但服务器由于某种原因失败了)?

请求似乎是浏览器中的3000端口,因为这是代理功能的重点。需要它以便浏览器允许我们在不在该服务器上启用CORS的情况下发出请求。然而,实际的请求被代理,所以当你看到它作为3000的请求时,CRA会将它管道传输到8080端口,而不能检测到应用程序本身。“

1 个答案:

答案 0 :(得分:0)

我上个月也遇到了同样的错误。

但是我通过在Express中调用我的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);

它位于快递文件夹(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..');
});

这是我的数据库操作。

如果有任何其他问题,请告诉我

谢谢

相关问题