我从 Sanity 获取我的 Next JS 应用程序中的数据以创建动态路由。 像这样:
export const getStaticPaths = async () => {
const res = await client.fetch(`*[_type in ["work"] ]`);
const data = await res;
const paths = data.map((e) => {
return {
params: { slug: e.slug.current },
};
});
return {
paths,
fallback: false,
};
};
export const getStaticProps = async (context) => {
const slug = context.params.slug;
const res = await client.fetch(`*[_type == "work" && slug.current == "${slug}"]
`);
const data = await res;
const resAll = await client.fetch(`*[_type == "work"] | order(order asc)`);
const dataAll = await resAll;
return {
props: {
post: data[0],
dataAll,
},
revalidate: 1, // 10 seconds
};
};
在本地主机上,一切都运行良好且快速,在 Netlify 上,每条新生成的路由都出现 404 错误。 只有在重新部署页面后才会出现。
我的目录如下所示:
-works
----[slug].jsx
----index.jsx
为什么 netlify 不立即识别新路径? 此外,通过 sanity 对网站上现有内容的每一次更改都需要相当长的时间才能显示在 netlify 上。
我尝试在 netlify 中创建一个构建挂钩并监听内容的变化,以在每次添加新内容时触发服务器上的构建。
不过,这似乎是一个棘手的解决方法。必须有一个更简单的方法来让它工作。
可能的解决方案:
我将 fallback 从 false 更改为 true,它可以在 Netlify 上运行而不会出现 404。 虽然它在本地主机上中断,但在实时服务器上工作。