我正在 SSR 模式下使用 Nuxt.js 构建 Vue.js 应用程序。axios
我的项目中有vue-i18n
插件。
nuxt.config.js
:
export default {
mode: 'universal',
// some irrelevant configs
modules: [
'@nuxtjs/axios',
'nuxt-i18n',
],
i18n: {
locales: [
{
code: 'en',
name: 'English',
file: 'en-EN.js'
},
{
code: 'de',
name: 'Deutsch',
file: 'de-DE.js'
}],
defaultLocale: 'en',
vueI18n: {
fallbackLocale: 'en',
},
lazy: true,
langDir: 'locales/',
vuex: {
moduleName: 'i18n',
syncLocale: true,
syncMessages: true,
syncRouteParams: true
},
},
/* Axios module configuration */
axios: {}
}
如您所见,i18n 设置为延迟加载。消息取自locales/en-EN.js
文件locales/de-DE.js
。在文件中,我想向后端 API 发出请求,它将为我提供消息。locales/en-EN.js
:
export default async function (context) {
return await context.$axios.get('backend-api');
}
但是,当我加载页面时,它说$axios
未定义:Cannot read property 'get' of undefined
。但是一旦我开始在语言之间切换,应用程序就会收到翻译。所以我的猜测是服务器在尝试$axios
从上下文访问时失败,但在客户端(浏览器)上它成功了。$axios
从 Nuxt访问模块的正确方法是什么context
?