man*_*shu 8 vue.js vuex nuxt.js
安装 nuxtjs 模块后,我一直收到此错误。我已经尝试了书中的所有技巧来修复它,但似乎没有任何效果。添加了更多信息。
[vuex] duplicate namespace auth/ for the namespaced module auth
Run Code Online (Sandbox Code Playgroud)
我对此感到很沮丧。
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
}
}
}
},
Run Code Online (Sandbox Code Playgroud)
插件
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",
],
Run Code Online (Sandbox Code Playgroud)
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
});
Run Code Online (Sandbox Code Playgroud)
以下是代码,我目前拥有。如果您需要查看任何其他文件,请随时告诉我。
小智 13
今天更新后遇到同样的问题。解决:
将 auth.js 逻辑移至 index.js 并删除 auth.js。
索引.js:
export const getters = {
authenticated(state) {
return state.auth.loggedIn
},
user(state) {
return state.auth.user
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 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);
Run Code Online (Sandbox Code Playgroud)
小智 5
您的商店文件夹中可能有一个名为“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”以外的其他内容,否则它将被用作默认值。
| 归档时间: |
|
| 查看次数: |
4933 次 |
| 最近记录: |