gpt4 book ai didi

javascript - 有没有办法从 NextJS API 路由读取 getStaticProps 的输出?

转载 作者:行者123 更新时间:2023-12-05 05:35:37 32 4
gpt4 key购买 nike

我需要在构建时计算和缓存前端和后端 API 路由所需的新数据。有没有办法读取 API 路由在构建时生成的静态属性? API 路由可公开访问,因此我不能只从前端传递数据。

最佳答案

所有构建工件都保存在 .next 文件夹中,该文件夹在应用程序源之外,因此您的代码将无法访问它。

如果您在 getStaticProps 中获取的数据计算起来很耗时,我会把它保存在一些 cache 中,然后在您的 API 路由中从这个缓存中读取。

更新:我撒了谎,我试了一下,实际上可以访问缓存的页面数据,但有一些警告。

给定页面的构建工件保存在 .next/server/pages/ 中。导出的静态 Prop 存储在与页面路径匹配的 JSON 文件中。例如。 /contact 的静态 Prop 位于 .next/server/pages/contact.json 中。

当您执行 yarn build 时,这些文件会被删除,因此您不能简单地导入它们

import data from '../../.next/server/pages/contact.json'

在您的代码中,因为这会因为您尝试导入不存在的文件而破坏构建。

你可以做的是以这种方式加载这个文件:

const cacheDirectory = path.join(process.cwd(), '.next/server/pages/');
const fileContents = await fs.readFile(cacheDirectory + '/contact.json', 'utf8');

当您执行 yarn start 时,这将构建得很好并且可以工作。但是...当您执行 yarn dev 时它不会工作,因为此命令会清除构建文件夹。要解决此问题,您可以检查 NODE_ENV 值并仅在 production 模式下运行此逻辑,并在此场景中使用一些模拟数据。

关于javascript - 有没有办法从 NextJS API 路由读取 getStaticProps 的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73464899/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com