I'm migrating a bunch of documents to Prismic. It's running great until a certain point. It keeps getting stuck at the 12th document with the error:
Prismic repository not found. Check that "https://ingenuity-group.cdn.prismic.io/api/v2" is pointing to the correct repository
.
Up to that point everything is fine and I can see the documents in the Migration release section on the Prismic dashboard. Attached is the server output from the migrate reporter which is updated every ~1 second as per the throttling on the migration endpoint.
I'm using Nuxt 3.15.4 on Node 20 and carrying out the migration via a POST request to a Nuxt server endpoint (using Nitro/H3) at /api/prismic/migrate. I'm using @nuxtjs/prismic v4.0.1
Below is the current state of my migration script:
import * as prismic from "@prismicio/client";
const communitiesUids = [
"the-pr-link",
"cmo-of-the-future",
"partnerships-connected",
"the-marketing-procurement-club",
];
export default defineEventHandler(async (event) => {
console.log("Prismic migration endpoint");
const { prismicWriteToken } = useRuntimeConfig();
const contentHubClient = prismic.createClient("ingenuity-london-content-hub");
const groupClient = prismic.createWriteClient("ingenuity-group", {
writeToken: prismicWriteToken,
});
const migration = prismic.createMigration();
const communityCategoryResponse = await contentHubClient.getAllByType(
"category",
{
filters: [prismic.filter.any("my.category.uid", communitiesUids)],
},
);
const communityCategoryIds = communityCategoryResponse.map(
(category) => category.id,
);
// 78 documents returned
const documentsFromPrismic = await contentHubClient.getAllByType("article", {
filters: [prismic.filter.any("my.article.category", communityCategoryIds)],
});
console.log(
documentsFromPrismic.length + " community articles being migrated...",
);
let i = 0;
documentsFromPrismic.forEach((documentFromPrismic, index) => {
if (index === 18) {
console.log("This one fails:", documentFromPrismic.uid);
}
// Currently the 19th document asset upload fails so cutting it here for now
if (index > 17) return;
const articleImageUrl = new URL(documentFromPrismic.data.article_image.url);
const articleImage = migration.createAsset(
articleImageUrl.origin + "/" + articleImageUrl.pathname,
articleImageUrl.pathname,
{
alt: documentFromPrismic.data.article_image.alt as string | undefined,
credits: documentFromPrismic.data.article_image.copyright as
| string
| undefined,
tags: ["Content Hub"],
},
);
migration.createDocument(
{
type: "article",
uid: documentFromPrismic.uid,
lang: documentFromPrismic.lang,
tags: ["Content Hub"],
data: {
article_title: documentFromPrismic.data.article_title,
article_type: documentFromPrismic.data.article_type,
article_summary: documentFromPrismic.data.article_summary,
displayed_publish_date:
documentFromPrismic.data.displayed_publish_date,
article_video: documentFromPrismic.data.article_video,
requires_subscription: documentFromPrismic.data.requires_subscription,
locked_content: documentFromPrismic.data.locked_content,
article_image: {
id: articleImage,
card_image: articleImage,
main_high_res: articleImage,
social_image: articleImage,
},
category: async () => {
if (
!documentFromPrismic.data.category.uid ||
communitiesUids.includes(documentFromPrismic.data.category.uid)
)
return;
return await groupClient.getByUID(
"category",
documentFromPrismic.data.category.uid,
);
},
community: async () => {
if (
!documentFromPrismic.data.category.uid ||
!communitiesUids.includes(documentFromPrismic.data.category.uid)
)
return;
return await groupClient.getByUID(
"community",
documentFromPrismic.data.category.uid,
);
},
slices: documentFromPrismic.data.body
.map((slice) => {
if (slice.slice_type === "content_block") {
return {
slice_type: "content_block",
variation: "default",
primary: {
content: slice.primary.content,
},
items: [],
};
}
})
.filter(Boolean),
},
},
documentFromPrismic.data.article_title,
);
i++;
});
console.log(i + " articles prepped for migration.");
let migratedDocs = 0;
try {
const result = await groupClient.migrate(migration, {
reporter: (event) => {
console.log(event);
migratedDocs++;
},
});
console.log("result", result);
} catch (e) {
console.log("e", e);
return e;
}
return migratedDocs + " articles migrated.";
});