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

Nuxt 3 自定义Composable突然提示未定义问题求助

问题排查:Composable函数突然未定义的500错误

我在composables/getCurrentYear.ts文件中创建了一个获取当前年份的Composable:

export const getCurrentYear = () => {
    return new Date().getFullYear();
}

在Footer组件中这样使用它:

<script setup>
const currentYear = getCurrentYear()
</script>

此前该Composable可以正常导入使用,但现在突然出现500错误:

500
getCurrentYear is not defined

at _sfc_main.setup (./components/AppFooter.js:56:23)
at callWithErrorHandling (./node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:171:22)
at setupStatefulComponent (./node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7194:29)
at setupComponent (./node_modules/@vue/runtime-core/dist/runtime-core.cjs.js:7149:11)
at renderComponentVNode (./node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:628:17)
at Module.ssrRenderComponent (./node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:94:12)
at _sfc_ssrRender (./components/AppLayout.js:26:31)
at renderComponentSubTree (./node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:710:17)
at renderComponentVNode (./node_modules/@vue/server-renderer/dist/server-renderer.cjs.js:644:16)

当前项目依赖列表:

"devDependencies": {
    "@nuxtjs/i18n": "^8.0.0-beta.11",
    "autoprefixer": "^10.4.13",
    "nuxt": "^3.4.3",
    "nuxt-simple-sitemap": "^2.4.23",
    "postcss": "^8.4.23",
    "tailwindcss": "^3.3.2"
  },
  "dependencies": {
    "@csstools/css-parser-algorithms": "^2.1.1",
    "@nuxtjs/google-fonts": "^3.0.0",
    "contentful": "^10.1.8",
    "contentful-rich-text-vue-renderer": "^3.1.0",
    "gsap": "file:gsap-bonus.tgz",
    "nuxt-swiper": "^1.1.0",
    "typescript": "^5.0.4"
  }

排查步骤

  • 确认composables目录结构:确保文件位于项目根目录的composables文件夹下,Nuxt 3默认自动导入该目录下的文件,子目录需额外配置或手动导入。
  • 清理Nuxt缓存:执行npx nuxt clean,或手动删除.nuxt、.output目录后重新构建,缓存损坏可能导致自动导入失效。
  • 检查文件与导出的一致性:确认文件名getCurrentYear.ts的大小写(Linux环境区分大小写),以及导出函数名getCurrentYear拼写完全正确,无笔误。
  • 验证自动导入配置:查看nuxt.config.ts中的imports配置,确认未禁用自动导入或修改了规则,保证composables目录在自动导入范围内。
  • 检查TypeScript配置:确认tsconfig.json未排除composables目录,也不存在其他影响文件解析的配置项。
  • 测试手动导入:在Footer组件中手动添加导入语句import { getCurrentYear } from '~/composables/getCurrentYear',若能正常运行则说明自动导入机制异常;若仍报错,检查文件是否存在语法错误或损坏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 07:30:27