【发布时间】:2019-08-06 11:25:46
【问题描述】:
我正在尝试在 NativeScript 上构建一个移动应用程序,我在其中创建了一个授权类,该类具有 login() 函数,该函数具有以下代码:
export default class NitsEditorAuth {
//Finding logged-in user.
isLoggedIn() {
return store.getters.access_token ? true : false;
}
//For Login user
login(user) {
const postData = {
grant_type: 'password',
username: user.email,
password: user.password,
client_id: clientId,
client_secret: clientSecret,
scope: '',
provider: provider
}
const authUser = {}
axios.post(authUrl, postData).then(response => {
if(response.status === 200)
{
authUser.access_token = response.data.access_token;
authUser.refresh_token = response.data.refresh_token;
axios.get(apiUrl + 'user/log', {headers: getHeader()}).then(response => {
if(response.status === 200){
authUser.email = response.data.email;
authUser.first_name = response.data.first_name;
authUser.last_name = response.data.last_name;
authUser.userRole = response.data.role;
store.commit('save', authUser);
return new Promise(function (resolve, reject) {
resolve('Login successful')
});
}
})
}
})
.catch((err) => {
if(err.response.status === 401){
// this.error = err.response.data.message
return new Promise(function (resolve, reject) {
reject('Validation error')
});
}
else
return new Promise(function (resolve, reject) {
reject('Something went wrong')
});
})
}
}
我将这个类包含在我的main.js 文件中:
const nitsEditorAuth = new NitsEditorAuth();
Vue.prototype.$nitsEditorAuth = nitsEditorAuth;
我在我的Vue-methods 中调用这个函数,比如:
login() {
this.$nitsEditorAuth
.login(this.user)
.then(() => {
this.processing = false;
this.$navigateTo(Home, { clearHistory: true });
})
.catch(() => {
this.processing = false;
this.alert(
"Unfortunately we could not find your account."
);
});
},
但我收到错误声明:
TypeError:无法读取未定义的属性“then”。框架:function:'login'
帮我解决这个问题。谢谢。
【问题讨论】:
-
login方法在NitsEditorAuth中返回 nothing。 -
@briosheje 你的意思是
login类中的NitsEditorAuth方法? -
是的,在我看来,这里抛出了错误:
this.$nitsEditorAuth .login(this.user)undefined 因为你的axios调用没有返回,仅此而已,真的,你非常接近解决方案。只需在axios之前添加return,它应该可以按预期工作,尽管出于设计目的我仍然会返回Promise(自定义承诺)。
标签: javascript node.js vue.js nativescript nativescript-vue