In our project we build out the URL for a page dynamically based on values contained in the page. In using this, our preview endpoint makes a fetch for page data when making the redirect which looks like this:
export default async (req, res) => {
const client = createClient({ req, fetch })
const documentId = req.query.documentId;
const {clientName, campaignName} = await getClientAndCampaignName(client, documentId);
await setPreviewData({ req, res })
await redirectToPreviewURL({
req,
res,
client,
linkResolver: doc => linkResolver(doc, clientName, campaignName)
});
}
Finding the client and campaign name, two relationship values, to build out the url. Link resolver that is used:
export function linkResolver(doc, clientName, campaignName) {
const { isCampaignNameInURL, isClientNameInURL } = doc.data || {};
const campaignRoute = isCampaignNameInURL && campaignName ? `/${campaignName}` : ''
const clientRoute = isClientNameInURL && clientName ? `/${clientName}` : ''
if (doc.uid) {
return clientRoute + campaignRoute + `/${doc.uid}`
}
return null;
}
This works correctly on our local servers, building out the dynamic url for a preview, however once we deploy the live version of this we run into an "Internal Server Error" when attempting to preview a page. Leaving us on the /api/preview route with no token or documentId params.