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

推荐答案

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

如果您在getStaticProps中获取的数据计算起来很耗时,我会将其保存在大约cache中,然后从API路径中的缓存中读取.

UPDATE:个 我撒谎了,我玩弄了一下,实际上访问缓存的页面数据是可能的,但有一些警告.

.next/server/pages/中保存给定页面的构建构件.导出的静态props 存储在与页面路径匹配的JSON文件中.例如,/contact的静态props 住在.next/server/pages/contact.json里.

当您执行yarn build时,这些文件将被删除,因此您不能简单地使用

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

因为这会因为您try 导入不存在的文件而中断构建.

您可以这样加载此文件:

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

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

Javascript相关问答推荐

为什么有些库公开了执行相同任务的方法,但每个方法都处于同步/同步上下文中?

Angular material 表多个标题行映射

JS生成具有给定数字和幻灯片计数的数组子集

Google图表时间轴—更改hAxis文本 colored颜色

react—router v6:路由没有路径

colored颜色 检测JS,平均图像 colored颜色 检测JS

配置WebAssembly/Emscripten本地生成问题

简单的PayPal按钮集成导致404错误

无法从NextJS组件传递函数作为参数'

在WordPress中使用带有WPCode的Java代码片段时出现意外令牌错误

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

元素字符串长度html

有没有一种直接的方法可以深度嵌套在一个JavaScript对象中?

判断函数参数的类型

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';

在HTML5画布上下文中使用putImageData时,重载解析失败

Plotly.js栏为x轴栏添加辅助文本

更改管线时不渲染组件的react

Firebase函数中的FireStore WHERE子句无法执行

如何创建一个for循环,用于计算仪器刻度长度并将其放入一个HTML表中?