Gatsby build / createPages:错误处理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gatsby build / createPages:错误处理相关的知识,希望对你有一定的参考价值。

我正在使用gatsby构建一个非常大的网站(5k +页,300k +图像)。源数据不可靠(例如,通常缺少字段),这会导致在createPage处理期间出错。

问题是,如果单个createPage运行引发错误,则entire build将失败。因此有时成功构建5k页,然后整个过程由于一个错误而崩溃。

我尝试将页面创建内容包装在try...catch中,但没有区别:

      try 
        createPage(
          path: node.slug,
          component: path.resolve(`./src/templates/BlogPost.js`),
          context: 
            id: node.id,
          ,
        );
       catch (error) 
        console.log(error);
      

((我还尝试在组件级别检查数据,如果数据不完整,则返回null,但是createPage仍会创建一个(空白)页面,我不希望这样:我只想要该页面如果数据不好则跳过]])

所以我的问题是:在构建过程中如何处理错误/页面创建失败,从而只跳过失败的页面而不是使整个构建崩溃?

注意,这几乎是this question的副本,但是那里的解决方案对我而言不起作用:如果数据不正确,我将无法呈现错误页面,如果在此位置,我需要完全跳过该页面所有可能

我正在使用gatsby构建一个非常大的网站(5k +页,300k +图像)。源数据不可靠(例如,通常缺少字段),这会在createPage过程中导致错误。问题是...

答案

您应该为源数据显式定义GraphQL模式:https://www.gatsbyjs.org/docs/schema-customization/#creating-type-definitions

以上是关于Gatsby build / createPages:错误处理的主要内容,如果未能解决你的问题,请参考以下文章

javascript Gatsby / Contentful - createPages

如何将特定上下文注入 Gatsby 中的所有页面?

如何在Gatsby中反转页面顺序?

盖茨比类别 slugs 在动态类别页面中不起作用

Gatsby 源插件仅显示 GraphQL 中数组中的最后一项

事件多次触发(Parse.com)