import { headers } from "next/headers"; import { canonicalFields, metadataBaseURL, type QueryBag } from "@/lib/siteUrl"; import type { Metadata } from "next"; /** * 请求时再读 SITE_URL,避免预渲染把构建环境的 origin 打进 HTML。 * 使用 headers() 而非 connection():后者会把 metadata 推迟到 之后, * 插件只扫 head 时仍显示 Missing。 * 根布局只设 metadataBase,各公开页再调本函数写入自身 Canonical。 */ export async function requestCanonical( pathname: string, query?: QueryBag ): Promise> { await headers(); return canonicalFields(pathname, query); } export async function requestMetadataBase(): Promise { await headers(); return metadataBaseURL(); }