【问题标题】:NextJS: Initialize an object onceNextJS:初始化一个对象一次
【发布时间】:2020-11-06 09:38:44
【问题描述】:

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

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


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

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

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

我尝试了以下方法:

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

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

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

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

【问题讨论】:

    标签: singleton next.js


    【解决方案1】:

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

    但我只会使用:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多