安装nuxtjs模块后,我一直收到此错误。我尝试了书中的所有技巧来修复它,但似乎没有任何效果。添加了更多信息。
[vuex] duplicate namespace auth/ for the namespaced module auth
我对此感到沮丧。
auth: {
plugins: [{ src: '~/plugins/axios', ssr: true }, '~/plugins/auth.js'],
vuex: {
namespace: 'auth'
},
strategies: {
local: {
endpoints: {
login: {
url: "login",
method: "post",
propertyName: "meta.token"
},
user: {
url: "me",
method: "get",
propertyName: false
},
logout: {
url: "logout",
method: "post"
},
redirect: {
login: "login",
logout: "/",
home: "/",
callback: "/"
},
watchLoggedIn: true,
rewriteRedirects: true
}
}
}
},
插件
plugins: [
{ src: "~/plugins/Maps.js", ssr: false },
{ src: "~/plugins/Typed.js", ssr: false },
{ src: "~/plugins/Animate.js", ssr: false },
{ src: "~/plugins/Counter.js", ssr: false },
{ src: "~plugins/Vimeo.js", ssr: false },
"~plugins/mixins/user.js",
"~plugins/mixins/validation.js",
],
auth.js << ----商店
export const getters = {
authenticated(state) {
return state.loggedIn;
},
user(state) {
return state.user;
}
};
export const state = () => ({
busy: false,
loggedIn: false,
strategy: "local",
user: false
});
以下是代码,我目前有。如果您需要查看其他文件,请随时告诉我。
您可能在商店文件夹中有一个名为“ auth.js”的文件,并且没有在nuxt.config.js文件中明确设置vuex.namespace选项。
从文档:
store目录中的每个.js文件都转换为命名空间模块(索引是根模块)。
因此,“ auth”自动成为一个名称空间。
问题是“ auth”也是用于保持状态的默认Vuex存储名称空间,因为如果未显式设置默认值,则nuxt.config.js文件中的“ vuex.namespace”选项默认为“ auth”。那是重复的地方。
要解决此问题,请将您的store / auth.js更改为诸如store / authentication.js之类的其他内容,或者将nuxt.config.js文件中的vuex.namespace选项更改为除“ auth”以外的其他内容,否则它将被使用默认情况下。
更新后,今天也遇到了同样的问题。解决:
将auth.js逻辑移至index.js并删除auth.js。
index.js:
export const getters = {
authenticated(state) {
return state.auth.loggedIn
},
user(state) {
return state.auth.user
}
}
如果您使用的是user.js mixin,请如下修改:
import Vue from 'vue'
import {mapGetters} from 'vuex'
const User = {
install(Vue, options) {
Vue.mixin({
computed: {
...mapGetters({
user: 'user',
authenticated: 'authenticated'
})
}
})
}
};
Vue.use(User);