在我的一个路由中使用getStaticProps
和getStaticPaths
方法时,我尝试运行next build
,但每次都失败。首先,它无法连接到我的应用程序接口(很明显,它们是使用Next.js的应用程序接口创建的,这些路由在不运行Next.js应用程序时是不可用的)。我认为在后台运行开发服务器可能会有所帮助。它确实发生了,但产生了另一个问题,就像这样:
Error: Cannot find module for page: /reader/[id]
Error: Cannot find module for page: /
> Build error occurred
Error: Export encountered errors on following paths:
/
/reader/1
不知道为什么。下面是/reader/id的代码
const Reader = ({ reader }) => {
const router = useRouter();
return (
<Layout>
<pre>{JSON.stringify(reader, null, 2)}</pre>
</Layout>
);
};
export async function getStaticPaths() {
const response = await fetch("http://localhost:3000/api/readers");
const result: IReader[] = await response.json();
const paths = result.map((result) => ({
params: { id: result.id.toString() },
}));
return {
paths,
fallback: false,
};
}
export async function getStaticProps({ params }) {
const res = await fetch("http://localhost:3000/api/readers/" + params.id);
const result = await res.json();
return { props: { reader: result } };
}
export default Reader;
没有什么特别事情。我从文档中重写了代码,并根据我的网站进行了调整。
这是/api/readers/[id]
处理程序。
export default async function handler(
req: NextApiRequest,
res: NextApiResponse
) {
const knex = getKnex();
const { id } = req.query;
switch (req.method) {
case "GET":
try {
const reader = await knex
.select("*")
.from("readers")
.where("id", id)
.first();
res.status(200).json(reader);
} catch {
res.status(500).end();
}
break;
}
}
也没什么特别的。那么,为什么每次我尝试构建我的应用程序时它都会崩溃呢?提前感谢您的帮助。
发布于 2021-06-28 08:01:20
您不应该从getStaticProps获取内部API路由-相反,您可以直接在getStaticProps中编写API路由中存在的获取代码。
https://nextjs.org/docs/basic-features/data-fetching#write-server-side-code-directly
https://stackoverflow.com/questions/68155114
复制相似问题