diff --git a/app/composables/useArticle.js b/app/composables/useArticle.js index 2a8071d..526c06f 100644 --- a/app/composables/useArticle.js +++ b/app/composables/useArticle.js @@ -99,12 +99,7 @@ export async function useArticleDetail(colId) { const { post } = useApi() const id = parseArticleId(route.params.id) - /** - * 注意:所有依赖 Nuxt 上下文的组合式函数(useSeoMeta / useHead / navigateTo) - * 必须在 await 之前调用,await 之后上下文会丢失(NUXT_E1001)。 - * 因此这里先注册 SEO(用 getter 读取 data),最后再 await 数据做 404 判断。 - */ - const asyncData = useAsyncData(`article-${id}`, async () => { + const asyncData = await useAsyncData(`article-${id}`, async () => { const [detailRes, hotRes, tagRes] = await Promise.all([ post('/article/getdetail', { id, prev_next: 1 }), post('/article/gethotlist', { page_no: 1, page_size: 10 }).catch(() => ({ list: [] })), @@ -151,9 +146,6 @@ export async function useArticleDetail(colId) { }], }) - // 等数据就绪后再判断(await 之后不能再调用需要上下文的组合式函数) - await asyncData - // 文章不存在 → 404,避免无效页面被搜索引擎收录 if (error.value || !data.value?.detail?.id) { throw createError({ statusCode: 404, statusMessage: '文章不存在', fatal: true })