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ロジックをindex.jsに移動し、auth.jsを削除します。
index.js:
export const getters = {
authenticated(state) {
return state.auth.loggedIn
},
user(state) {
return state.auth.user
}
}
User.jsミックスインを使用している場合は、次のように修正します。
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オプションを明示的に設定していません。
ドキュメントから:
ストアディレクトリ内のすべての.jsファイルは、名前空間モジュールとして変換されます(インデックスはルートモジュールです)。
つまり、「auth」は自動的に名前空間になります。
問題は、「auth」が状態を維持するためのデフォルトのVuexストアのネームスペースでもあることです。明示的に何も設定されていない場合、nuxt.config.jsファイルの「vuex.namespace」オプションはデフォルトで「auth」であるためです。それが重複が出てくるところです。
これを解決するには、store/auth.jsをstore/authentication.jsのような別のものに変更するか、nuxt.config.jsファイルのvuex.namespaceオプションを「auth」以外に変更してください。そうしないと、デフォルトとして使用されます。