2017-12-29 22 views
0

私はオブジェクトをなぜ私はスロー新しいエラー(error.response)内に置くときに私の正確な値を取得することができます未定義となっているか尋ねたいと思います。ここでは以下の私のコードは次のとおりです。新しいエラーをスローするときの未定義オブジェクト(error.response);

componentDidMount(){ 
    this.validateUrlInToken() 
    .then(this.onValidateUrlInTokenSuccess) 
    .catch(this.onValidateUrlInTokenFail); 
} 

validateUrlInToken() { 
    const tokenParams = { 
    token: this.props.params.token, 
    }; 

    return axios.post('/api/core/validate_token/', tokenParams); 
} 

onValidateUrlInTokenSuccess(response) { 
    const { data } = response.data; 
    const email = data.username; 
    const userId = data.user_id; 
    const lastLogin = data.last_login; 

    this.setState({ email, userId, lastLogin }); 

    this.getSite() 
    .then(this.onGetSiteSuccess) 
    .catch(this.onGetSiteFail); 
} 

onValidateUrlInTokenFail(error) { 
    console.log(error.response) // { data: { detail: 'Invalid Token' } } 
    this.context.router.push('/login'); 
    throw new Error(error.response); // Undefined response 
} 
+1

正確なエラーメッセージとは何ですか? – Barmar

+0

this.context.router.push( '/ login')と関連している可能性があります。コードブロック。この行をコメントアウトしてからもう一度試してください – metinata

答えて

1

は、コールバックを使用してみてください代わりに

onValidateUrlInTokenFail(callback,error) { 
    console.log(error.response) // { data: { detail: 'Invalid Token' } } 
    this.context.router.push('/login'); 
    callback(new Error(error.response)); 
} 
+0

これは 'error.response'という未定義の値を使用しようとします。 – Barmar

関連する問題