【发布时间】:2020-04-21 09:38:28
【问题描述】:
我正在使用 gatsby 构建一个非常大的网站(5k+ 页,300k+ 图片)。源数据不可靠(例如经常缺少字段),导致createPage过程中出现错误。
问题在于,如果单个 createPage 运行引发错误,整个构建 将失败。所以有时 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 的副本,但那里的解决方案对我不起作用:如果数据不正确,我无法呈现错误页面,如果这是,我需要完全跳过该页面尽可能
【问题讨论】:
-
您可以在将数据传递给 createPage 之前对其进行验证吗?
-
是的,这最终是解决方案,不是吗 - 我真的试图避免这种情况,因为我们的构建时间已经很疯狂,并且在每个产品上验证深度 json 只会增加这一点。但如果真的没有其他办法,那就是我必须做的:(
-
300k 图像...哇!
标签: gatsby