为什么 nextJS 导出的页面中有些文件如此之大(> 26MB)?

sut*_*her 5 next.js

我使用 nextjs 创建了一个网页,并用于next export创建它的静态页面。我想知道为什么输出目录中存在巨大文件大小的文件(请参阅:截屏

如果我将其上传到服务器并在浏览器中运行,该页面会非常快。看来至少 - 即使文件_app.js_index.js存在于该目录中 - 它们不被实时页面使用。

但我想知道为什么它们如此之大,以及如果生产不需要它们为什么会在输出目录中?

--

我使用“Webpack Bundle Analyzer”分析了该捆绑包,但仍然不明白造成如此巨大文件大小的原因是什么: 在此输入图像描述

--

我从 github 创建了一个小项目,并运行,next build并且输出目录中根本next export没有_app.js_error.js,但只有文件名中带有随机字符串的项目!

那么这可能取决于我的环境配置错误吗?

sut*_*her 5

我找到这个BUG的原因了!

有点复杂,所以我一步步描述。

假设您有一个干净的项目,但从未构建过。您执行next buildnext export,然后/out创建了 -Directory。(这是预期的行为!)

如果您没有干净的项目,您可以通过在现有项目上执行以下步骤来模拟它:

  1. 删除目录:.next、out、node-modules
  2. 纱线安装
  3. 纱线下一个构建
  4. 纱线下一步出口

对于我当前的项目,这会产生一个大小约为 5 MB 的 /out-Directory。

到目前为止:一切都很好!

现在我们重现一下这个BUG:

  1. next dev
  2. 现在 - 当next dev仍在运行时,做一个新的next build
  3. 至少做next export

您现在会在您的目录中找到一些文件/out,这些文件对于实时环境来说是不需要的(并且根本不应该在那里!)。它们的大小在兆字节范围内。(在我的例子中,它是 _app.js、[pages].js...但我认为它至少是每个页面的一个文件。如果您知道它们没有随机的,您很容易找到它们- 文件名中的字符串)

对于我的项目,-Directory 的文件大小out从大约 5 MB 增加到大约 20 MB

其他重要事实:

停止next dev进程并next export再次运行不会解决问题! 您需要完全删除.next-Directory 中的所有内容才能解决此问题。

在完美的世界中,该next export流程应该识别当前是否有next dev进展,并给出一条错误消息,表明该流程首先需要关闭。