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

在Next.js与React中配置Schema.org遇@context语法错误的求助

解决Next.js中Schema.org结构化数据的@context语法错误问题

这个错误的核心原因是你没有给script标签指定正确的MIME类型,浏览器会把JSON-LD内容当成普通JavaScript解析,而@context里的@符号在JS语法里会被识别为非法token(比如ES装饰器的前缀),从而抛出语法错误。

直接按下面的方法修改即可解决:

  • 给script标签添加type="application/ld+json"属性,明确告诉浏览器这是JSON-LD格式的结构化数据,不是可执行的JS代码。
  • 保持@context字段不变,这是Schema.org要求的必填项。

修改后的代码示例:

import Head from "next/head";

function ViewPost({ post, episodeCount, name }) {
    const episodeKeys = Object.keys(post.episodes);

    return <>
        <Head>
            {/* 关键:添加type="application/ld+json" */}
            <script 
                type="application/ld+json"
                dangerouslySetInnerHTML={{
                    __html: JSON.stringify({
                        "@context": "https://schema.org",
                        "@type": "Movie", // 注意:Schema.org规范里类型字段是@type而非type
                        abstract: post.synopsis,
                        contentRating: "Mature",
                        genre: "anime",
                        inLanguage: "en",
                        keywords: `${post.tags.join(",")}`,
                        producer: {
                            "@type": "Organization",
                            name: post.studio
                        },
                        name: post.title,
                        text: post.summary,
                        thumbnailUrl: post.thumbnailImage.filePath
                    })
                }} 
            />
        </Head>
        {/* 其他组件内容 */}
    </>
}

额外提醒:你原来代码里的type: "Movie"不符合Schema.org规范,规范要求类型字段为@type,修改后才能确保搜索引擎正确识别你的结构化数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:32:51