Javascript 如何异步获取区域设置(nuxt.js+;i18n+;axios)

Javascript 如何异步获取区域设置(nuxt.js+;i18n+;axios),javascript,vue.js,vuejs2,axios,nuxt.js,Javascript,Vue.js,Vuejs2,Axios,Nuxt.js,我希望异步获取位置。不幸的是,我的代码导致“超过最大调用堆栈大小”错误。我怎样才能正确地做呢 到目前为止,我试图通过调用messages对象内部的axios命令来实现这一点 ~/plugins/i18n.js import Vue from "vue"; import VueI18n from "vue-i18n"; import axios from 'axios'; Vue.use(VueI18n); export default async ({ app, store }) =>

我希望异步获取位置。不幸的是,我的代码导致“超过最大调用堆栈大小”错误。我怎样才能正确地做呢

到目前为止,我试图通过调用messages对象内部的axios命令来实现这一点

~/plugins/i18n.js

import Vue from "vue";
import VueI18n from "vue-i18n";
import axios from 'axios';

Vue.use(VueI18n);

export default async ({ app, store }) => {
    app.i18n = new VueI18n({
    locale: 'fr',
    fallbackLocale: 'en',
    messages: {
        en: await axios.get('https://some-api/en/locale'),
        fr: await axios.get('https://some-api/fr/locale')
    }
});
}


我希望在呈现页面之前异步获取本地设置。

在创建Vue实例时,可以在
beforeCreate
钩子中执行此操作:

const i18n = new VueI18n();
new Vue({
  el: rootElement,
  i18n,
  beforeCreate() {
    const vm = this;
    axios.get(url)
      .then((response) => {
        vm.$i18n.setLocaleMessage('en', response.data);
    });
  }
});

在创建Vue实例时,可以在
beforeCreate
hook中执行此操作:

const i18n = new VueI18n();
new Vue({
  el: rootElement,
  i18n,
  beforeCreate() {
    const vm = this;
    axios.get(url)
      .then((response) => {
        vm.$i18n.setLocaleMessage('en', response.data);
    });
  }
});
使用中间件:

或者使用axios从存储中的模块获取数据,并在
nuxtServerInit
中调用它:

export default actions {
async nuxtServerInit({dispatch}){
  await dispatch('apicallmodule/apicallAction')
}
使用中间件:

或者使用axios从存储中的模块获取数据,并在
nuxtServerInit
中调用它:

export default actions {
async nuxtServerInit({dispatch}){
  await dispatch('apicallmodule/apicallAction')
}