NextJS ISR页面在AWS Amplify上返回404,而在localhost上运行正常

rvpgvaaj  于 2023-05-17  发布在  其他
关注(0)|答案(1)|浏览(133)

我正在AWS Amplify上测试NextJS应用程序 *。网站在本地运行良好。所有页面(包括增量静态再生(ISR)页面)均已加载并正常工作。甚至,在运行npm run build时,它显示ISR页面已经创建,我可以在.next/static/chunks/pages/...中看到这些页面
但是,在Amplify上,ISR页面返回404。
我将getStaticPaths()内的参数设置为fallback: false,将getStaticProps()内的参数设置为revalidate: 1
在CloudWatch中,我得到以下错误:

[x-amplify-log][INFO] app response status_code=404 Not Found 
headers=x-nextjs-matched-path: /blog/page/[page_index], 
x-powered-by: redacted (7), etag: "zelzrux0qt2i9", 
content-type: text/html; charset=utf-8, 
vary: Accept-Encoding, content-encoding: gzip, 
date: Mon, 08 May 2023 13:25:32 GMT, connection: keep-alive, 
keep-alive: redacted (9), transfer-encoding: chunked, 
x-amplify-internal-request-id: d4c3b5ff-56a0-4bf4-b4c6-3d1116ced0e1, 
x-amplify-internal-metrics: CustomerServerReadinessCheck;dur=533, 
RuntimeTotal;dur=978, RuntimeInitialization;dur=543, 
CustomerServerCall;dur=429

你知道这里会发生什么吗?
谢谢!

3df52oht

3df52oht1#

**TLDR;

getStaticPaths()中,将fallback: false替换为fallback: 'blocking'

原因:

由于我将fallback设置为false,并且页面没有预先呈现,因此Nextjs返回404。
一旦我将fallback更改为'blocking',如果页面没有预先呈现,Next将加载该apge。一旦它第一次这样做,它将被缓存,然后像其他预呈现的页面一样提供服务。

相关问题