API 数据不会在生产中更新,但在本地工作

Posted

技术标签:

【中文标题】API 数据不会在生产中更新,但在本地工作【英文标题】:API data does not update in production, but works locally 【发布时间】:2021-09-15 08:59:49 【问题描述】:

我有一个问题,我看不到错误。

我使用 Next.js 制作的应用程序使用 API 来获取货币值。

在本地,日期和价格会在修改时更新。但在生产中它不起作用,它只显示部署完成时加载的最后一个数据。

我在索引中使用getStaticProps 来获取每个货币类别的数据。

export default function Home( oficial, blue, bolsa, turista, contadoliqui ) 
  return (
    <Layout>
      <Box p=10>
        <Stack
          display= md: "flex" 
          spacing=8
          direction=["column", "column", "row"]
        >
          <DolarOficialCard oficial=oficial />
          <DolarBlueCard blue=blue />
        </Stack>
        <Stack
          display= md: "flex" 
          spacing=8
          mt=8
          direction=["column", "column", "row"]
        >
          <DolarBolsaCard bolsa=bolsa />
          <DolarContado contadoliqui=contadoliqui />
        </Stack>
        <Box direction=["column", "column", "row"] spacing=8 mt=8>
          <DolarTuristaCard turista=turista />
        </Box>
        <Box align="center" mt=50>
          <Alert status="info" justifyContent="center">
            <AlertIcon />
            Última Actualización: oficial.fecha
          </Alert>
        </Box>
      </Box>
    </Layout>
  );


export const getStaticProps = async () => 
  const oficial = await getDolarOficial();
  const blue = await getDolarBlue();
  const bolsa = await getDolarBolsa();
  const turista = await getDolarTurista();
  const contadoliqui = await getDolarLiqui();

  return 
    props: 
      oficial,
      blue,
      bolsa,
      turista,
      contadoliqui,
    ,
  ;
;

【问题讨论】:

【参考方案1】:

getStaticProps 表示你的页面是静态页面,只生成一次。如果要始终获取最新数据,则需要使用getServerSideProps

否则,您可以使用增量静态再生。您需要在预定义的“秒”内将您的 getStaticProps 发送到 revalidate

export const getStaticProps = async () => 
  const oficial = await getDolarOficial();
  const blue = await getDolarBlue();
  const bolsa = await getDolarBolsa();
  const turista = await getDolarTurista();
  const contadoliqui = await getDolarLiqui();

  return 
    props: 
      oficial,
      blue,
      bolsa,
      turista,
      contadoliqui,
    ,
      revalidate: 10, // Revalidate every 10 seconds with new data.
  ;
;

在开发(下一个开发)中,getStaticProps 将在每个 请求。

这就是为什么它可以在本地工作但不能在生产环境中工作的原因。

【讨论】:

我尝试了你的建议,但它在我的生产中不起作用 您可能想开始一个新问题,连同您的代码一起获得答案。

以上是关于API 数据不会在生产中更新,但在本地工作的主要内容,如果未能解决你的问题,请参考以下文章

Meteor iOS 热代码推送在 testflight 和生产中被破坏,但在本地 xcode 构建中工作

Mongoose 在数据库中创建一个新文档,但不会在生产中获取更新的集合

Mongoose 在数据库中创建一个新文档,但不会在生产中获取更新的集合

Flutter Firebase Google Auth 在生产中不起作用

Express + React:CSRF Coo​​kie 在生产中未定义,在本地工作

PHP DOMNodeList错误:在开发人员中有效,但在生产中无效