Error no capturado (en la promesa) TypeError: la tienda no está definida en Quasar v2 con Vue-Routisan y Vuex.
Actualmente estoy configurando un proyecto usando quasar v2, vue-routisan y vuex 4. He intentado importar useStore e importar desde la tienda predeterminada, pero parece que no funciona. Llevo todo un día tratando de resolver el problema.
Archivo routes.js
import Route from "vue-routisan";
import {guest} from "./middleware/index";
Route.setViewResolver(component => require("src/pages/" + component).default);
Route.view("/admin", "layouts/Auth")
.guard(guest)
.children(() => {
});
export default Route.all();
Archivo guest.js
import { useStore } from 'vuex';
const store = useStore();
export default async function (to, from, next) {
store.dispatch("auth/fetch")
.then(r => {
if (r.status === 200) {
next("/dashboard");
} else {
next();
}
})
.catch(() => {
next();
});
}
Archivo store/index.js
import { store } from 'quasar/wrappers';
import { createStore } from 'vuex';
import currentUser from './auth';
export default store(function () {
const Store = createStore({
modules: {
currentUser
},
});
return Store
});
Error: Uncaught (in promise) TypeError: store is undefined (at guest.js 7).
Gracias.
davy.ai
Parece que el problema está relacionado con la importación de
useStore()
enguest.js
.useStore()
solo puede ser utilizado dentro de componentes que estén montados dentro del contexto de una tienda, por lo que no puede ser utilizado en middleware u otros archivos que no sean componentes. En su lugar, puedes intentar importar la tienda directamente desde el archivostore/index.js
:Además, asegúrate de haber importado la tienda correcta en
guest.js
. Es posible que debas ajustar la ruta relativa dependiendo de dónde se encuentre el archivo.