Nic*_*mar 5 typescript next.js
我将 Next.js 与 TypeScript 结合使用。如果数据不存在,当我尝试返回重定向时出现错误。
import { GetStaticProps } from "next";
import fs from "fs/promises";
import path from "path";
function HomePage({ products }: { products: { id: string; title: string }[] }) {
return (
<ul>
{products.map((product) => {
<li key={product.id}>{product.title}</li>;
})}
</ul>
);
}
export const getStaticProps: GetStaticProps = async () => {
const filePath = path.join(process.cwd(), "data", "dummy-backend.json");
const jsonData = await fs.readFile(filePath);
const data = JSON.parse(jsonData.toString());
// THE PROBLEM
if (!data) {
return {
redirect: {
destination: "/no-data",
},
};
}
if (data.products.length === 0) {
return { notFound: true };
}
return { props: { products: data.products }, revalidate: 10 };
};
export default HomePage;
Run Code Online (Sandbox Code Playgroud)
输入 '() => Promise<{ 重定向: { 目的地: 字符串; }; 未找到?:未定义;道具?:未定义;重新验证?:未定义;} | { 未找到:真;重定向?:未定义;道具?:未定义;重新验证?:未定义;} | { 道具: { ...; }; 重新验证:数字;重定向?:未定义;未找到?:未定义;}>' 不可分配给类型 'GetStaticProps<{ [key: string]: any; }, ParsedUrlQuery>'.
输入 'Promise<{ 重定向:{ 目的地:字符串;}; 未找到?:未定义;道具?:未定义;重新验证?:未定义;} | { 未找到:真;重定向?:未定义;道具?:未定义;重新验证?:未定义;} | { 道具: { ...; }; 重新验证:数字;重定向?:未定义;未找到?:未定义;}>' 不可分配给类型 'Promise<GetStaticPropsResult<{ [key:string]: any; }>>'。
类型 '{ 重定向:{ 目的地:字符串;}; 未找到?:未定义;道具?:未定义;重新验证?:未定义;} | { 未找到:真;重定向?:未定义;道具?:未定义;重新验证?:未定义;} | { 道具: { ...; }; 重新验证:数字;重定向?:未定义;未找到?:未定义;}' 不可分配给类型 'GetStaticPropsResult<{ [key: string]: any; }>'。
类型 '{ 重定向:{ 目的地:字符串;}; 未找到?:未定义;道具?:未定义;重新验证?:未定义;}' 不可分配给类型 'GetStaticPropsResult<{ [key: string]: any; }>'。
类型 '{ 重定向:{ 目的地:字符串;}; 未找到?:未定义;道具?:未定义;重新验证?:未定义;}' 不可分配给类型 '{ props: { [key: string]: any; }; 重新验证?: 数量 | 布尔 | 不明确的; }'。
属性“props”的类型不兼容。
类型“undefined”不可分配给类型“{ [key: string]: any;” }'.ts(2322)
这个错误是由这段代码引起的
if (!data) {
return {
redirect: {
destination: "/no-data",
},
};
}
Run Code Online (Sandbox Code Playgroud)
根据此文档,https://nextjs.org/docs/pages/api-reference/next-config-js/redirects代码应该是这样的。目的地和永久都是需要的。
if (!data) {
return {
redirect: {
destination: "/",
permanent: false,
},
};
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2957 次 |
| 最近记录: |