2017-02-18 7 views
0

Javascriptが新しく、sessionTokenが設定されていない理由がわかりません。私がconsole.log()を実行すると、私はそれを設定したにもかかわらず未定義になります。私は間違って何をしていますか?Javascriptでクラス変数が設定されても、まだ定義されていません

class Service extends Backend { 

    initialize(token) { 
    if (!_.isNull(token) && _.isUndefined(token.sessionToken)) { 
     throw new Error('Token missing'); 
    } 
    this.sessionToken = _.isNull(token) 
     ? null 
     : token.sessionToken.access_token; 

    console.log(this.sessionToken); 

    this.API_BASE_URL = CONFIG.backend.serviceLocal 
     ? CONFIG.SERVICE.local.url 
     : CONFIG.SERVICE.remote.url; 

    this.CLIENT_ID = CONFIG.backend.serviceLocal 
     ? CONFIG.SERVICE.local.client_id 
     : CONFIG.SERVICE.remote.client_id; 
    } 
} 
+1

"token.sessionToken.access_token" は未定義またはnullである場合は、チェックされていませんか?たぶんそうです。あなたのコードをもっと見ることなく、言うことは難しいです。 –

+0

あなたが正しいと思う、私はまずそれを確認する必要があります。ただし、この特定のシナリオでは、sessionTokenには常にaccess_tokenが含まれています。私は実際にコードを踏んでおり、アクセストークンには値がありますが、this.sessionTokenはまだその値を取りません。 – Shamsun

答えて

0
this.sessionToken = _.isNull(token) 
    ? null 
    : token.sessionToken.access_token; 

として、あなただけのトークンが存在するかどうかをチェックし、それはまた、access_tokenはない場合があることを前提としているビュレントVuralによってコメントで述べています。それは事実ではないと思われ、あなたは未定義になります。あなたのコードhereを嘲笑し、もしあなたがaccess_tokenを渡さなければ、それは本当に未定義で失敗するでしょう。多分ユニットテストを書く時間がありますか? :)

0

あなただけがaccess_tokenを気にしているようです。それが定義されていない場合、なぜ投げないのですか?

はこのように、あなたの関数を記述してください:

initialize(token) { 
 

 
    if (!(token && token.sessionToken && token.sessionToken.access_token)) { 
 
    throw new Error('Access token missing'); 
 
    } 
 

 
    this.sessionToken = token.sessionToken.access_token; 
 
    console.log(this.sessionToken); 
 

 
}

関連する問題