添加 cloudinary 时 POST http://localhost:3000/api/v1/register 500(内部服务器错误)

问题描述 投票:0回答:0

    
POST http://localhost:3000/api/v1/register 500(内部服务器错误)添加cloudinary。当我在邮递员上运行时它工作正常,但是当我添加 cloudinary 时出现上述错误。我尝试了很多方法,但似乎没有用。 có vẻ như tôi đang sử dụng phiên bản cũ。我应该降级版本吗?????`

`Code in controllers file from backend`
//Register a user  http://localhost:4000/api/v1/register
const regiesterUser = catchAsyncError(async(req, res, next) =>{

    const result = await cloudinary.v2.uploader.upload(req.body.avatar, {
        folder: 'avatars',
        width: 150,
        crop: "scale"
        
    })

    const { name, password, email} = req.body;
    const user = await User.create({
        name,
        password,
        email,
        avatar:{
            public_id: result.public_id,
            url: result.secure_url
        }
    })
    sendToken(user, 201, res);

})

 
来自前端的 userAction 中的代码
 

// Register user
export const register = (userData) => async (dispatch) => {
    try {

        dispatch({ type: REGISTER_USER_REQUEST })

        const config = {
            headers: {
                'Content-Type': 'multipart/form-data'
            }
        }

        const { data } = await axios.post('/api/v1/register', userData, config)

        dispatch({
            type: REGISTER_USER_SUCCESS,
            payload: data.user
        })

    } catch (error) {
        dispatch({
            type: REGISTER_USER_FAIL,
            payload: error.response.data.message
        })
    }
}

`

`Code in componnents from frontend`
`
const Register = () => {

    const [user, setUser] = useState({
        name: '',
        email: '',
        password: '',
    });

    const { name, email, password } = user;

    const [avatar, setAvatar] = useState('');
    const [avatarPreview, setAvatarPreview] = useState('/images/default_avatar.jpg')

    const { isAuthenticated, error, loading } = useSelector(state => state.auth);

    const navigate = useNavigate();
    const alert = useAlert();
    const dispatch = useDispatch();

    useEffect(() => {
        if (isAuthenticated) {

            navigate('/')
        }

        if (error) {
            alert.error(error)
            dispatch(clearErrors());
        }

    }, [dispatch, alert, isAuthenticated, error, navigate]);

    const submitHandler = (e) => {
        e.preventDefault();

        const formData = new FormData();
        formData.set('name', name);
        formData.set('email', email);
        formData.set('password', password);
        formData.set('avatar', avatar);

        dispatch(register(formData))
    }

    const onChange = (e) => {
        if(e.target.name === 'avatar') {
            const reader = new FileReader();
            reader.onload = () => {
                if(reader.readyState === 2) {
                    setAvatarPreview(reader.result);
                    setAvatar(reader.result);
                }
            }
            if(e.target.files[0]){
                reader.readAsDataURL(e.target.files[0])
            }
            
        }else {
            setUser( {...user, [e.target.name]: e.target.value })
        }
    }
    return (
        <Fragment>
             <MetaData title={'Register'} />
            <div className="row wrapper">
                <div className="col-10 col-lg-5">
                    <form className="shadow-lg" onSubmit={submitHandler} encType='multipart/form-data'>
                        <h1 className="mb-3">Register</h1>

                        <div className="form-group">
                            <label htmlFor="email_field">Name</label>
                            <input 
                                type="name" 
                                id="name_field" 
                                className="form-control" 
                                name='name'
                                value={name} 
                                onChange={onChange}
                            />
                        </div>

                        <div className="form-group">
                            <label htmlFor="email_field">Email</label>
                            <input 
                                type="email" 
                                id="email_field"
                                className="form-control" 
                                name='email'
                                value={email} 
                                onChange={onChange} />
                        </div>

                        <div className="form-group">
                            <label htmlFor="password_field">Password</label>
                            <input 
                                type="password" 
                                id="password_field" 
                                className="form-control" 
                                name='password'
                                value={password} 
                                onChange={onChange} />
                        </div>

                        <div className='form-group'>
                            <label htmlFor='avatar_upload'>Avatar</label>
                            <div className='d-flex align-items-center'>
                                <div>
                                    <figure className='avatar mr-3 item-rtl'>
                                        <img src={avatarPreview} className='rounded-circle' alt='Avatar preview'  />
                                    </figure>
                                </div>
                                <div className='custom-file'>
                                    <input 
                                        type='file' 
                                        name='avatar' 
                                        className='custom-file-input' 
                                        id='customFile' 
                                        accept="images/*"
                                        onChange={onChange}
                                    />

                                    <label className='custom-file-label' htmlFor='customFile'>
                                        Choose Avatar
                                    </label>
                                </div>
                            </div>
                        </div>

                        <button 
                            id="register_button" 
                            type="submit" 
                            className="btn btn-block py-3"
                            disabled = {loading ? true : false}
                        >
                            REGISTER
                        </button>
                    </form>
                </div>
            </div>
        </Fragment>
    );
}

export default Register;

`

cloudinary internal-server-error
© www.soinside.com 2019 - 2024. All rights reserved.