Next.js页面在生产构建时以404结束

zte4gxcn  于 2023-04-30  发布在  其他
关注(0)|答案(3)|浏览(193)

我建立了一个下一个。js app.页面在开发环境中工作正常,但如果我尝试运行生产构建,则只运行索引。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

因此,我假设页面得到正确的构建。现在这让我相当困惑。
从我的索引。我有一个next/link to /strategy/goals,如果点击它,它将永远加载。如前所述,如果直接访问,页面显示404。
编辑:另外,控制台只显示http://localhost:3000上的Ready--〉不显示任何关于构建页面的日志,不确定这应该发生在生产中还是只发生在开发中。

von4xj4u

von4xj4u1#

***TLDR:***/页应仅包含小写字母。

  • (我自己回答)*

问题是文件夹名称和文件(例如/Product/Overview)大写,这在测试中没有问题,因为接下来直接路由,case没有问题。
执行构建版本时,生产环境的文件系统接管路由。有些操作系统(macOS对我来说)区分大小写,因为找不到页面,所以无法正确路由。

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

gpfsuwkq

gpfsuwkq2#

在我的情况下,这是因为index页面和第二个页面有不同的文件名,但导出常量的名称是错误的(由于复制粘贴)
即,两份文件都有:const Home: NextPage = () => {
解决办法是更改其中一个的名称

myzjeezk

myzjeezk3#

请确保您没有任何子文件夹内的网页文件夹。此外,所有文件夹和文件必须小写。

**(不工作)**前:

之后(工作):

相关问题