命名空间模块 auth 的重复命名空间 auth/

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)

以下是代码,我目前拥有。如果您需要查看任何其他文件,请随时告诉我。

https://www.youtube.com/watch?v=FojAfwueTLc

小智 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”以外的其他内容,否则它将被用作默认值。