繁体   English   中英

NextJS:初始化一个对象一次

[英]NextJS: Initialize an object once

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

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


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

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

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

我尝试了以下几件事:

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

所有这些都没有改变,在构建站点时为每个页面调用长initializeBigData()

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

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

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

但我只会使用:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM