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 요청이 처리되지 않는 것 같다,하지만 내 인생은 왜 알아낼 수 없기 때문. 어떤 도움이 크게 감사합니다 :)
헤이 (내 디렉토리 노드 응용 프로그램 내에서 중첩 만들-반응-응용 프로그램을 가지고)에 반작용 측의 package.json에 프록시 규칙을 생성하는 것을 잊었다 실현 @ cryptofish123 I을 비슷한 문제가 있지만 클라이언트 파트의 package.json에 "프록시"를 추가해도 도움이되지 않습니다. 프록시를 추가 했습니까? 서버 측에서 true입니까? – jessi
@jessi는 새로운 사용자를 DB에 저장하고 있습니까? – doctopus
아,이 문제를 해결하고 이것에 대해 잊어 버렸습니다. 그것은 프록시를 가지고 있지만, 나는 body_parser를 설정하는 것을 잊어 버렸습니다. – jessi