我正在尝试将localStorage的使用改为cookies,因为我需要使用子域。当我在任何.vue文件中使用this.$cookie.set()或get()时,我可以毫无问题地使用,但当我在任何.js文件中使用时,我会得到以下结果:
TypeError:无法读取未定义的属性'set‘。
我正在使用vue-cookie btw。
这是我的store.js文件:
import Vue from "vue";
import Vuex from "vuex";
import axios from "./axios-auth.js";
import globalAxios from "axios";
import router from "./router";
import VueCookie from 'vue-cookie';
Vue.use(VueCookie)
Vue.use(Vuex);
export default new Vuex.Store({
state: {
token: null,
userId: null,
expireIn: null,
segmentoSelecionado: null,
codigoTransfSelecionado: null
},
actions: {
login({ commit }, authData) {
axios
.post("/auth", {
username: authData.username,
password: authData.password,
returnSecureToken: true
})
.then(res => {
const now = new Date().getTime();
const expirationDate = new Date(now + 3500000).getTime();
this.$cookie.set('userToken', res.data.token, {domain: 'subdomain.domain.com'});
commit("authUser", {
userToken: this.$cookie.get('userToken'),
});
.catch(error => console.log(error));
},
发布于 2019-06-07 23:07:41
Vue.use(VueCookie)
:扩展Vue对象,将$cookie
功能添加到继承自该对象的所有组件。
Vuex不是从Vue继承的,所以不会有$cookie
功能。
我刚刚检查了vue-cookie docs,应该通过Vue.cookie
在全局vue对象上公开该功能
尝试在Vue对象上使用cookie
,而不是在Vuex对象上使用$cookie
:
Vue.cookie.set('userToken', res.data.token, {domain: 'subdomain.domain.com'});
和
userToken: Vue.cookie.get('userToken')
https://stackoverflow.com/questions/56501883
复制