我对Javascript相对较新,我似乎无法弄清楚为什么sessionToken没有设置。当我调试console.log()时,即使我刚刚设置它,我仍然未定义。我做错了什么?
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;
}
}
答案 0 :(得分:0)
this.sessionToken = _.isNull(token)
? null
: token.sessionToken.access_token;
如在Bulent Vural的评论中所说,你只是检查令牌是否存在,然后假设如果它也存在access_token。似乎情况并非如此,并且您未定义。我嘲笑了你的代码here,如果你没有通过access_token,它确实会因未定义而失败。也许是时候写一些单元测试? :)
答案 1 :(得分: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);
}