【问题标题】:API call in NextJS getStaticProps causes error 500NextJS getStaticProps 中的 API 调用导致错误 500
【发布时间】:2020-09-17 06:05:45
【问题描述】:

getStaticProps 中进行的 API 调用似乎会导致错误 500。

这是我的组件代码:

import React from "react";
import API from "services/api";

const ArtistListPage = (props) => {
    return (
        <>
            {props.artists.map((artist) => (
                <div key={artist.id}>{artist.first_name}</div>
            ))}
        </>
    );
};

export async function getStaticProps() {
    // Get external data from the file system, API, DB, etc.
    const res = await API.get("/get_artists");
    const artists = await res.data.json();
    return {
        props: { artists },
    };
}

export default ArtistListPage;

我想提一下,useEffect 中的相同 API 调用有效,并且将硬编码对象传递给getStaticProps 中的props。只有getStaticProps 中的 API 调用似乎会导致问题。

有谁知道错误可能来自哪里以及如何解决?

【问题讨论】:

    标签: next.js server-side-rendering


    【解决方案1】:

    getStaticProps 在构建时执行,您无法调用自己的 API,因为 Next.js 服务器未运行。

    您可以直接执行 DB 查询或从 getStaticProps 内部的文件系统读取,而无需进行 API 调用。

    【讨论】:

    • 感谢您的回答!如果它取决于从数据库查询的数据,我真的不明白我应该如何使我的页面对 SEO 友好......我应该使用 getServerSideProps 吗?
    • @Thanh-QuyNguyen,这取决于数据的性质。如果它不经常更改,您可以考虑在构建时预渲染它。 getServerSideProps 将获取每个请求的数据并在服务器端预渲染它,但请求时间会增加,因为它不再是静态渲染的。
    • 即使使用getServerSideProps,我仍然收到错误 500...知道为什么以及如何解决这个问题吗?
    • @Thanh-QuyNguyen,您可以在 CLI / 日志中检查 Node.js 控制台输出,以查看导致错误 500 的确切错误。
    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 2021-11-13
    • 2021-11-03
    • 2021-01-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多