我正在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
你知道这里会发生什么吗?
谢谢!
1条答案
按热度按时间3df52oht1#
**TLDR;
在
getStaticPaths()
中,将fallback: false
替换为fallback: 'blocking'
原因:
由于我将
fallback
设置为false
,并且页面没有预先呈现,因此Nextjs返回404。一旦我将
fallback
更改为'blocking'
,如果页面没有预先呈现,Next将加载该apge。一旦它第一次这样做,它将被缓存,然后像其他预呈现的页面一样提供服务。