最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

未找到URL反应调用节点js函数

网站源码admin16浏览0评论

未找到URL反应调用节点js函数

未找到URL反应调用节点js函数

我尝试使用fecth方法通过前端反应使用nodejs创建一些身份验证系统,但一直说:GEThttp://localhost:9000/user/register400(未找到),但我成功在另一页上调用了api的get方法,如:fetch( “ http://localhost:9000/disneyCharacter”)

这里是我的代码:

import React, { useState } from 'react'
import { Link } from 'react-router-dom';
import { axios } from 'axios';

const Register = () => {

  const user = {
    name: '',
    email: '',
    password: '',
    confirmPassword: '',
  }

  const [userData, setUserData] = useState(user);
  const [error, setError] = useState('');
  const [submitted, setSubmitted] = useState(false);

  const handleChange = e => {
    setUserData({ ...userData, [e.target.id]: e.target.value })
  }

  const  data = {
    method: 'POST',
    headers : { 'Content-Type': 'application/json ' },
    body: JSON.stringify({
      name: user.name,
      email: user.email,
      password: user.password
    })
  };

  const saveUser = e => {
    e.preventDefault();
    fetch('http://localhost:9000/user/register', { data })
      .then(response => setUserData({
          name: name,
          email: email,
          password: password
        }))
      .then(setSubmitted(true))
      .then(console.log(userData))
      .catch(error => {
        setError(error);
        console.log(error);
      })
  }

  const newUser = () => {
    setUserData(user);
    setSubmitted(false);
  }

  const { name, email, password, confirmPassword } = userData;

  const btn = name === '' || email === '' || password === '' || password !== confirmPassword
  ? <button disabled>Inscription</button> : <button>Inscription</button>

  // gestion erreurs
  const errorMsg = error !== '' && <span>{error.message}</span>

  return (

    <div className="signUpLoginBox">
      <div className="slContainer">
        <div className="">
          <div className="formContent">
            <form onSubmit={saveUser}>

              {errorMsg}

              <h2>Inscription</h2>
              <div className="inputBox">
                <input type="text" id="name" onChange={handleChange} value={name} autoComplete="off"  />
                <label htmlFor="pseudo">Name</label>
              </div>

              <div className="inputBox">
                <input type="email" id="email" onChange={handleChange} value={email} autoComplete="off" required />
                <label htmlFor="email">Email</label>
              </div>

              <div className="inputBox">
                <input type="password" id="password" onChange={handleChange} value={password} autoComplete="off" required />
                <label htmlFor="password">Mot de passe</label>
              </div>
              <div className="inputBox">
                <input type="password" id="confirmPassword" onChange={handleChange} value={confirmPassword} autoComplete="off" required />
                <label htmlFor="confirmPassword">Confirmez le mot de passe</label>
              </div>

              {btn}

            </form>
            <div className="linkContainer">
              <Link className="simpleLink" to="/login">Déjà inscrit? Connectez-vous </Link>
            </div>
          </div>
        </div>
      </div>
    </div>
  );
};

export default Register

我的身份验证文件node.js:

const router = require('express').Router();
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');
const User = require('../models/User');
const { registerValidation, loginValidation } = require('./validation');


router.post('/register', async (req, res) => {
  //LETS VALIDATE THE DATA BEFORE WE A USER
  const {error} = registerValidation(req.body);
  if (error) return res.status(400).send(error.details[0].message);

  //Checking if the user is already in the database
  const emailExist = await User.findOne({email: req.body.email})
  if(emailExist) return res.status(400).send('Email already exists');

  //Hash passwords
  const salt = await bcrypt.genSalt(10);
  const hashedPassword = await bcrypt.hash(req.body.password, salt);

  //Create a new user
  const user = new User({
    name: req.body.name,
    email: req.body.email,
    password: hashedPassword
  });
  try{
    const savedUser = await user.save();
    res.send( {user: user._id});
  }catch(err){
    res.status(400).send(err);
  }
});



module.exports = router;

然后在我的app.js(节点)中就像:

const authRoute = require('./ routes / auth');

app.use('/ user',authRoute);

您看到问题了吗?

回答如下:

在前端,您是从“ / user / register”获取的,但是您的auth文件中节点中的帖子只是“ / register”。尝试使它们匹配。

发布评论

评论列表(0)

  1. 暂无评论