我正在尝试在注册时存储用户数据。我正在使用一个简单的形式进行反应。节点/表达后端。
我收到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端口,而不能检测到应用程序本身。“
答案 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..');
});
这是我的数据库操作。
如果有任何其他问题,请告诉我
谢谢