Next.js 页面在生产版本中以 404 结尾

Ste*_*hke 5 production build reactjs next.js

我已经构建了一个 next.js 应用程序。这些页面在开发环境中运行良好,但如果我尝试运行生产构建,则只有 index.js 页面正确加载,所有其他页面都以 404 结尾。

npm run build 输出以下内容:

reating an optimized production build ...

Compiled successfully.

Warning: You have opted-out of Automatic Prerendering due to `getInitialProps` in `pages/_app`.
Read more: https://err.sh/next.js/opt-out-automatic-prerendering

Page                                    Size     Files  Packages
? ? /                                   66.8 kB      4        27
?   /_app                               17.9 kB      0        31
?   /_document
?   /_error                             397 B        0        27
? ? /Products/[specificPage]/Dashboard  404 B        4        27
? ? /Products/Overview                  95.1 kB      9        30
? ? /Products/Roadmap                   475 B        4        27
? ? /Strategy/Goals                     451 B        4        27
? ? /Strategy/Metrics                   459 B        4        27
Run Code Online (Sandbox Code Playgroud)

因此,我假设页面得到正确构建。这现在让我相当困惑。

在我的 index.js 页面上,我有一个指向 /strategy/goals 的下一个/链接,如果单击该链接将永远加载。如上所述,如果直接访问该页面将显示 404。

编辑:此外,控制台仅在http://localhost:3000上显示 Ready --> 不显示有关构建页面的任何日志,不确定这应该在生产中发生还是仅在开发中发生。

Ste*_*hke 8

TLDR: /pages 应该只包含小写字母。

(由本人回答)

问题是文件夹名称和文件(例如/Product/Overview)大写,这在测试中没有问题,因为下一个直接路由并且大小写没有问题。

执行构建版本,生产环境的文件系统接管路由。某些操作系统(对我来说是 macOS)区分大小写,并且由于找不到页面而无法正确路由。

通过小写 /pages 目录中的所有内容来修复。

  • 就我而言,所有内容都是小写,但我仍然面临问题。 (4认同)
  • 我们可以有 - 分离的路线,如“配置文件渲染”等。@StefanJanuschke (2认同)