1

Ich versuche, eine Redux-Registrierung und Auth-Flow durch Firebase einrichten, mit Sagas Middleware. Aber ich bin immer:Redux-Sagas-Generator Ausbeute innerhalb Callback

Module build failed: SyntaxError: Unexpected token (16:3) 

    14 | registerUser(action.creds).then(response => { 
    15 |  if(response.payload.errorCode) 
> 16 |   yield put({type: 'REGISTRATION_FAILED', message: {msg_type: 'error', msg_body: response.payload.errorMessage}}) 
    |  ^
    17 |  else 
    18 |   yield put({type: 'REGISTRATION_SUCCESSFUL', user: response}) 
    19 | }); 

etwas generisch, aber diese Zeile Code bewegen, dass Ausbeute scheint gerade nicht in einem Callback sein mag. Jedoch sehe ich nirgends, dass dies ausdrücklich nicht erlaubt ist. Gibt es einen besseren Weg, dies zu tun? Hier ist der Saga-Generator.

export function* registerUserSaga(action){ 
    console.log('registerUser called') 
    console.log(action) 

    registerUser(action.creds).then(response => { 
     if(response.payload.errorCode) 
      yield put({type: 'REGISTRATION_FAILED', message: {msg_type: 'error', msg_body: response.payload.errorMessage}}) 
     else 
      yield put({type: 'REGISTRATION_SUCCESSFUL', user: response}) 
    }); 
} 

und hier ist die Feuerbasis Registrierungsfunktion:

export default FireBaseTools = { 
    registerUser: (creds) => { 
     return firebaseAuth.createUserWithEmailAndPassword(creds.email, creds.password).then(user => { 
      return user; 
     }).catch(error => { 
      return { 
      errorCode: error.code, 
      errorMessage: error.message 
      } 
     }); 
    } 
} 

EDIT: Ursprünglich dachte ich, diese Ursache war durch die if/else, aber der Rückruf scheint der wahre Schuldige

Antwort

0

Sie zu sein sollte Promise von der registerUser-Funktion verwenden;

etwas wie folgt aus:

registerUser: creds => { 
    return firebaseAuth.createUserWithEmailAndPassword(creds.email, creds.password) 
    .then(user => ({user})) 
    .catch(error => ({error})) 
} 

export function* registerUserSaga(action){ 

    const {error, user} = yield call(registerUser,action.creds); 
    error 
    ? yield put({type: 'REGISTRATION_FAILED', 
       message: {msg_type: 'error', msg_body: error.message}}) 

    : yield put({type: 'REGISTRATION_SUCCESSFUL', user}); 
}