首页 > 解决方案 > NextJS:初始化一个对象一次

问题描述

我使用 NextJS 生成静态页面列表。

所有页面都需要一个大的静态 Javascript 对象,需要几分钟来初始化(它包含解析许多其他文件的结果)。


const bigData = initializeBigData();   // <- called for every page, instead once

export async function getStaticProps({ params }) {
  return { bigData[params.slug] };  // ...
}

不幸的是,我找不到一种方法来初始化这个数据对象一次。相反,initializeBigData()每次创建页面时都会运行缓慢,这使得构建非常缓慢。

我尝试了以下事情:

所有这些事情都没有改变,initializeBigData()在构建网站时,每个页面都会调用 long 。

如果可能,我不想使用自定义服务器。

一个对象如何在 NextJS 项目的构建过程中只初始化一次?

标签: singletonnext.js

解决方案


这里有一个相关的讨论https://github.com/vercel/next.js/discussions/15054

但我只会使用:

  if (!global.font) {
    global.font = fs.readFileSync("fonts/Somefont.ttf");
  }

推荐阅读