You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nuxt3 Intlify i18n点击切换语言报错:必须在setup函数顶部调用

解决切换语言时的"Must be called at the top of a setup function"报错

问题原因

useI18n 是Vue的组合式API函数,必须在<script setup>的顶层作用域调用,不能放到嵌套函数(比如点击事件处理函数changeLanguage)里面执行,这是组合式API的调用规则,违反就会触发这个语法错误。

修复方案

在<script setup>的最外层先获取i18n实例,再在事件函数里直接用这个实例修改语言:

修改languageSwitch.vue代码:

<script setup>
import { useI18n } from 'vue-i18n';

// 顶层调用useI18n拿到locale对象
const { locale } = useI18n()

const changeLanguage = (lang) => {
  // 直接修改locale的值即可切换语言
  locale.value = lang
}
</script>

额外说明

你的nuxt.config.js配置没问题,不用调整。记住所有useXXX开头的组合式API函数,都得在setup的顶层调用,不能放在回调、if判断这类嵌套逻辑里。

内容的提问来源于stack exchange,提问作者AzotoN1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:40:28