无API调用的增量静态再生Nextjs 13

7gs2gvoe  于 2022-11-23  发布在  其他
关注(0)|答案(1)|浏览(113)

我希望在调用Nexjs 13应用中的端点时能够使用增量静态重新生成。问题是我的端点是一个Edge函数,因此在构建代码时出现以下错误:

当我尝试在app/目录中调用Edge函数时,出现此错误。

async function fetchPosts() {
  const res = await fetch(`${basePath}/api/myExpensiveEndpoint`, { next: { revalidate: 60 } });
  const data = await res.json();

  return data.posts;
}

我认为这是意料之中的,因为这是一个Nextjs Edge函数,它们不允许在静态生成方法中调用。解决方案应该是直接调用方法,而不是API。类似如下:

import { myExpensiveFunction } from '../../lib/functions'

export async function getStaticProps() {
  const data = await myExpensiveFunction()

  return {
    props: { posts: data.posts },
    revalidate: 60,
  };
}

但是Nexjs13不支持新的app/目录中的getStaticProps,所以这不起作用。所以我试图在不使用旧的pages/目录的情况下寻找解决这个问题的方法。

fjaof16o

fjaof16o1#

import { fetchExpensiveCalculation } from '../../lib/expensiveCalculation'

export const revalidate = 3600;

async function ExampleComponent () {
  const schedule = await fetchExpensiveCalculation()
}

调用我的函数并导出常量revalidate就成功了:)
以下是来源:https://beta.nextjs.org/docs/data-fetching/fetching#segment-cache-configuration

相关问题