Stop the build with reporter.panic
On last week's show, we sourced data from Supabase in the form of little avatars.
If the sourcing fails though, we'll get problems down the road with the Avatars
component:
Cannot query field "allUserAvatar" on type "Query"
It would be better to fail as fast as possible, and you may do so with reporter.panic
.
// File: gatsby-node.js
const { createClient } = require("@supabase/supabase-js");
const supabaseUrl = process.env.GATSBY_PUBLIC_SUPABASE_URL;
const supabaseServiceKey = process.env.SUPABASE_SERVICE_KEY;
const serviceSupabase = createClient(supabaseUrl, supabaseServiceKey);
exports.sourceNodes = async (gatsbyUtils) => {
const { actions, createNodeId, createContentDigest, reporter } = gatsbyUtils;
const { createNode } = actions;
const { data, error } = await serviceSupabase
.from("avatars")
.select("username, avatar_url")
.limit(20);
if (error) {
// 👇👇👇 Stops the build
reporter.panic("No avatars sourced", error);
}
data.forEach((item) => {
createNode({
id: createNodeId(item.username),
avatarUrl: item.avatar_url,
username: item.username,
internal: {
type: "UserAvatar",
contentDigest: createContentDigest(item),
},
});
});
};
Read more about the reporter
helper in the Gatsby Docs.
All the best,
Queen Raae