2017-10-13 2 views
1

사용자가 등록하는 기능을 설정하려고합니다. 등록 양식은 Redux 양식을 사용하고 인증은 passport.js에서 처리하며 사용자 DB에는 mongoDB (mLab)를 사용하고 있습니다.새 사용자를 등록하기 위해 POST 요청을 시도 할 때 404 오류가 발생합니다.

POST http://localhost:3000/signup 404 (Not Found) 
Uncaught (in promise) Error: Request failed with status code 404 

행동 /하는 index.js :

export const createUser = values => async dispatch => { 
    const res = await axios.post('/signup', values); 

    dispatch({ 
    type: CREATE_USER, 
    payload: res 
    }); 
}; 

authRoutes.js :

const passport = require('passport'); 

module.exports = app => { 
    app.post(
    '/signup', 
    passport.authenticate('local-signup', { 
     successRedirect: '/', 
     failureRedirect: '/signup', 
     failureFlash: true 
    })); 
}; 

나는 새 사용자를 가입하려고

, 나는 다음과 같은 오류가 passport.js :

const passport = require('passport'); 
const LocalStrategy = require('passport-local').Strategy; 
const mongoose = require('mongoose'); 
const User = mongoose.model('users'); 


// Local signup strategy 
passport.use('local-signup', new LocalStrategy(
    { 
    usernameField: 'email', 
    paswordField: 'password', 
    passReqToCallback: true 
    }, 
    (req, email, password, done) => { 
    console.log(req); 
    User.findOne({ 'local.email': email }, (err, user) => { 
     if (err) { return done(err); } 

     if (user) { 
     return done(null, false, { message: 'That email already exists.' }); 
     } else { 
     const newUser = new User({ 
      'local.email': email, 
      'local.password': password 
     }).save(err => { 
      if (err) { throw err }; 
     }); 
     return done(null, newUser); 
     console.log(newUser); 
     } 
    }); 
    } 
)); 

SignUp.js : 참조 코드의

import _ from 'lodash'; 
import React, { Component } from 'react'; 
import { connect } from 'react-redux'; 
import { reduxForm, Field } from 'redux-form'; 
import validateEmail from '../../utils/validateEmail'; 
import FormField from './FormField'; 
import signUpFields from './signUpFields'; 
import * as actions from '../../actions'; 

class SignUp extends Component { 
    onSubmit(values) { 
    values.email = values.email.trim(); 
    this.props.createUser(values); 
    } 

    renderFields() { 
    return _.map(signUpFields, ({ label, name, type }) => { 
     return <Field key={name} type={type} component={FormField} name={name} label={label} /> 
    }); 
    } 

    render() { 
    return (
     <div> 
     <h2>Sign Up</h2> 
     <form onSubmit={this.props.handleSubmit(this.onSubmit.bind(this))}> 
      {this.renderFields()} 
      <button type='submit' className='teal btn-flat right white-text'> 
      Sign Up 
      </button> 
     </form> 
     </div> 
    ) 
    } 
} 

function validate(values) { 
    const errors = {}; 

    errors.username = validateEmail(values.username); 

    if (values.password !== values.confirmPassword) { 
    errors.confirmPassword = 'Must match password'; 
    } 

    return errors; 
} 

SignUp = reduxForm({ 
    validate, 
    form: 'signupForm' 
})(SignUp); 

export default connect(null, actions)(SignUp); 

나머지 : https://github.com/drhectapus/Voting-App

는 POST 요청이 처리되지 않는 것 같다,하지만 내 인생은 왜 알아낼 수 없기 때문. 어떤 도움이 크게 감사합니다 :)

답변

0

내가

+0

헤이 (내 디렉토리 노드 응용 프로그램 내에서 중첩 만들-반응-응용 프로그램을 가지고)에 반작용 측의 package.json에 프록시 규칙을 생성하는 것을 잊었다 실현 @ cryptofish123 I을 비슷한 문제가 있지만 클라이언트 파트의 package.json에 "프록시"를 추가해도 도움이되지 않습니다. 프록시를 추가 했습니까? 서버 측에서 true입니까? – jessi

+0

@jessi는 새로운 사용자를 DB에 저장하고 있습니까? – doctopus

+0

아,이 문제를 해결하고 이것에 대해 잊어 버렸습니다. 그것은 프록시를 가지고 있지만, 나는 body_parser를 설정하는 것을 잊어 버렸습니다. – jessi

관련 문제