Nuxt Studio部署时nuxt generate报错500:无法解构undefined的'doc'属性
这个Cannot destructure property 'doc' of 'undefined'错误,结合本地构建正常、Nuxt Studio部署失败的场景,主要有以下几种可能:
内容文件未同步或路径不匹配
本地存在的博客markdown/mdx内容文件,没有提交到GitHub仓库;或者文件路径存在大小写差异(本地Windows环境不区分大小写,而部署环境是Linux系统,严格区分大小写),导致Nuxt Content在部署构建时找不到对应文档,返回undefined,解构doc时触发错误。动态路由预渲染的数据源问题
如果博客使用了动态路由(比如[slug].vue),本地构建时能正确读取本地内容源,但Nuxt Studio部署时,可能默认拉取远程内容源(比如关联的CMS),而该远程源中缺少对应文档;或者queryContent的查询逻辑有误,部署环境下无法匹配到目标文档,返回undefined。环境变量配置缺失
本地配置了Nuxt Content相关的环境变量(比如内容源路径、访问密钥),但没有在Nuxt Studio的项目设置中同步这些变量,导致部署构建时Content模块无法正常加载文档数据。依赖版本不一致
本地开发环境的@nuxt/content或相关依赖版本,与Nuxt Studio部署环境使用的版本存在差异,部分API行为变化导致获取文档的返回值变为undefined。异步数据未做异常处理
页面组件中使用queryContent或useAsyncData获取文档时,直接解构返回结果(比如const { doc } = await queryContent(...).findOne()),没有处理文档不存在的情况。本地因为文档存在不会触发,但部署时如果因为上述任何原因找不到文档,就会抛出解构错误。
内容的提问来源于stack exchange,提问作者Gonzalo Encinar Badia

