programing

namesched 모듈 인증에 중복된 이름 공간 auth/

itsource 2022. 7. 2. 22:54
반응형

namesched 모듈 인증에 중복된 이름 공간 auth/

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
});

다음은 현재 가지고 있는 코드입니다.다른 파일이 필요하시면 언제든지 말씀해 주세요.

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

업데이트 후 오늘 같은 문제에 직면했습니다.해결 방법:

auth.js 로직을 index.js로 이동하고 auth.js를 삭제합니다.

index.syslog:

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);

저장소 폴더 내에 "auth.js"라는 파일이 있을 수 있으며 nuxt.config.js 파일에 vuex.namespace 옵션을 명시적으로 설정하지 않았습니다.

매뉴얼에서 다음 항목을 참조하십시오.

스토어 디렉토리 내의 모든 .disc 파일은 네임새드모듈(인덱스가 루트모듈)로 변환됩니다.

즉, "auth"는 자동으로 네임스페이스가 됩니다.

문제는 "auth"가 상태를 유지하기 위한 기본 Vuex 저장소 네임스페이스이기도 합니다. 명시적으로 설정된 옵션이 없으면 nux.config.js 파일의 "vuex.namespace" 옵션이 기본적으로 "auth"이기 때문입니다.거기서 복제품이 나온다.

이 문제를 해결하려면 store/auth.js를 store/authentication.js와 같은 다른 것으로 변경하거나 nux.config.js 파일의 vuex.namespace 옵션을 "auth" 이외의 것으로 변경합니다.그렇지 않으면 기본값으로 사용됩니다.

기본적으로는 Nuxt는 인증 네임스페이스를 사용하여 인증 정보를 예약합니다.파일도 생성하는 경우auth.js그러면 기본 설정과 경합이 발생합니다.

솔루션:"Panos"괜찮아.단, 고객님과 같이 인증정보를 유지하기 위해 새로운 모듈을 만들고 싶다면 파일을 만들 수 있습니다.Auth.js대신auth.js스토어 디렉토리에 있습니다.기본 네임스페이스와 충돌하지 않습니다.

그런 다음 다음과 같이 nuxt auth 모듈에서 인증 정보를 반환할 수 있습니다.여기서 인증 모듈의 상태를 캡처합니다.rootState

export const getters = {
authenticated(state, getters, rootState) {
 return rootState.auth.loggedIn;
},

user(state, getters, rootState) {
 return rootState.auth.user;
}
};

또한 user.js mixin을 사용하는 경우 다음과 같이 수정합니다.

import Vue from "vue";
import { mapGetters } from "vuex";

const User = {
  install(Vue, options) {
  Vue.mixin({
  computed: {
    ...mapGetters("Auth", {
      user: "user",
      authenticated: "authenticated"
    })
  }
});
}
};
Vue.use(User);

언급URL : https://stackoverflow.com/questions/59338642/duplicate-namespace-auth-for-the-namespaced-module-auth

반응형