还是报错Uncaught ReferenceError: Cannot access 'i18nInstance' before initialization
时间: 2024-03-16 21:44:07 浏览: 83
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#Object‘的解决方法
如果你在使用`i18nInstance`时仍然报错"Uncaught ReferenceError: Cannot access 'i18nInstance' before initialization",可能是因为你在调用`axios.interceptors`时,`i18nInstance`还未被初始化。
你可以尝试把`axios.interceptors`放在`bootstrap`函数中,确保`i18nInstance`已经被初始化后再调用`axios.interceptors`。例如:
```
async function bootstrap() {
const app = createApp(App);
// ...
// 多语言 存储本地
setupI18n(app).then((i18n) => {
i18nInstance = i18n;
// 注册全局指令
setupGlobDirectives(app);
// 实例挂载
app.mount("#app");
//图标组件注册到 Vue
nextTick(() => {
Object.keys(Icons).forEach((key) => {
app.component(key, Icons[key as keyof typeof Icons]);
});
});
// 在i18nInstance被初始化后再调用axios.interceptors
axios.interceptors.request.use((config) => {
config.headers["Accept-Language"] = i18nInstance.global.locale.value;
return config;
});
axios.interceptors.response.use(
(response) => {
// 处理响应数据
const data = response.data;
// 使用i18nInstance翻译错误信息
if (data.success === false) {
const errorMessage = i18nInstance.t(data.message);
// 抛出错误
return Promise.reject(new Error(errorMessage));
}
return response;
},
(error) => {
// 处理响应错误
return Promise.reject(error);
}
);
});
}
bootstrap();
```
这样就可以确保`i18nInstance`已经被初始化后再调用`axios.interceptors`,避免"Uncaught ReferenceError: Cannot access 'i18nInstance' before initialization"的错误。
阅读全文