NextJS:初始化一个对象一次

Son*_*123 10 singleton next.js

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

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


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

export async function getStaticProps({ params }) {
  return { bigData[params.slug] };  // ...
}
Run Code Online (Sandbox Code Playgroud)

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

我尝试过以下操作:

  • 使用模块作为单例
  • 使用 ES6 类单例
  • 使用一次npm 包
  • 将构建线程减少到 1:npm run build --threads=1

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

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

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

fat*_*nse 2

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

但我只会使用:

  if (!global.font) {
    global.font = fs.readFileSync("fonts/Somefont.ttf");
  }
Run Code Online (Sandbox Code Playgroud)