singleton - NextJS:初始化一个对象一次
问题描述
我使用 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()
在构建网站时,每个页面都会调用 long 。
如果可能,我不想使用自定义服务器。
一个对象如何在 NextJS 项目的构建过程中只初始化一次?
解决方案
这里有一个相关的讨论https://github.com/vercel/next.js/discussions/15054
但我只会使用:
if (!global.font) {
global.font = fs.readFileSync("fonts/Somefont.ttf");
}
推荐阅读
- python - Python函数平方
- typescript - typescript 和 react-loader 有一些问题
- c# - Socket.SetSocketOption 在 Mac OS 和 Linux 上抛出无效参数异常,但在 Windows 上工作正常
- laravel - 如何将所有json文件数据插入数据库?
- java - java - 如何将sql查询附加到java中的现有文件?
- webpack - Wepback 和前端 monorepo
- python-3.x - 如何在 python 中拆分“21-13,20-21”-> [[21,13],[20,21]]?
- java - Swagger 引用一个 Spring 对象的响应,使用 Swagger 进行分页
- python - 如何在 python 函数 save_single_frameset 中使用 Realsense
- c# - 当自己的 ErrorHandler 事件发生时如何添加一些事情?