Next.js 中的 Array(n) 生产长度错误

lcs*_*sth 5 typescript reactjs next.js

我试图在 TypeScript 中创建一个特定长度的数组,但每当我在生产模式(又称缩小版本)下运行我的应用程序时,生成的数组长度就会减少一。具体来说:当我跑步时

console.log(Array(3));
Run Code Online (Sandbox Code Playgroud)

在开发模式下,我得到(3) [empty x 3],但在构建并运行生成的文件后,我得到(2) [empty x 2].

我正在使用标准构建和启动命令(next devnext buildnext start)运行 Next.js 应用程序(版本 12.2.0)。

有谁知道为什么会发生这种情况?

最少的复制步骤

  1. npx create-next-app@latest使用默认值在空目录中运行
  2. 中,在return语句之前/pages/index.js添加console.log(new Array(3))
  3. 在 localhost:3000 上运行yarn dev输出(3) [empty x 3]
  4. 在 localhost:3000 上运行yarn build && yarn start输出(2) [empty x 2]

jul*_*ves 5

这似乎与SWC Minification有关,它转换Array(3)[,,](runningoutputs console.log([,,])) (2) [empty x 2]

目前正在进行SWC 缩小反馈讨论来报告此类问题。


您可以swcMinify完全禁用next.config.js

module.exports = {
    swcMinify: false
}
Run Code Online (Sandbox Code Playgroud)

或者,保持swcMinify启用状态,但使用类似以下内容,直到此问题得到修复。

Array.from({ length: 3 })
Run Code Online (Sandbox Code Playgroud)