部署在AWS Amplify的Next.js应用ISR功能失效求助
Next.js应用部署到AWS Amplify后ISR(增量静态再生)功能失效问题
我将一款Next.js应用部署至AWS Amplify,本地构建和运行时ISR功能正常,但部署后该功能失效。已确认DynamoDB中存在新数据,且页面的getStaticProps中已设置revalidate: 60,但页面仍未重新生成。此外,未找到该应用对应的Lambda函数。
尝试过手动部署及通过GitHub CI/CD部署,也完全移除应用后重新部署多次,但问题依旧。
使用SSG+ISR的页面getStaticProps代码
export const getStaticProps: GetStaticProps<{ menu_data: string }> = async () => { const days = [ "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag", "Sonntag", ] const menuData: { menu_data: Array<Array<IMenuItem>> } = { menu_data: [[], [], [], [], [], [], []], } try { for (let i = 0; i < 7; i++) { const fetchedDayMenu = (await API.graphql( graphqlOperation(dayMenuByTitle, { title: days[i] }) )) as { data: DayMenuByTitleQuery } const dayMenuItem = fetchedDayMenu.data.dayMenuByTitle?.items[0] let dayMenuId = "" if (dayMenuItem?.id) { dayMenuId = dayMenuItem.id } if (dayMenuId !== "") { const response = (await API.graphql( graphqlOperation(dishesByDayMenuID, { dayMenuID: dayMenuId }) )) as { data: DishesByDayMenuIDQuery } if (response.data && response.data.dishesByDayMenuID) { const fetchedDishes = response.data.dishesByDayMenuID.items for (const index in fetchedDishes) { const dish = fetchedDishes[index] if (dish) { const parsedDish = { dish_text: dish.dish_text, price: dish.price, isVegetarian: dish.isVegetarian, } menuData.menu_data[i].push(parsedDish) } } } } } } catch (e) { console.log(e) } return { props: { menu_data: JSON.stringify(menuData) }, revalidate: 60, } }
package.json配置
{ "name": "app-name", "version": "0.1.0", "private": true, "scripts": { "dev": "next dev", "build": "next build && next export ", "start": "next start", "lint": "next lint" }, "dependencies": { "@aws-amplify/ui-react": "^5.0.4", "@types/formidable": "^2.0.6", "@types/mime": "^3.0.1", "@types/node": "18.15.11", "@types/react": "18.0.31", "@types/react-dom": "18.0.11", "amplify": "^0.0.11", "aws-amplify": "^5.3.3", "eslint": "8.37.0", "eslint-config-next": "13.2.4", "framer-motion": "^10.12.17", "mime": "^3.0.0", "next": "13.2.4", "react": "18.2.0", "react-dom": "18.2.0", "react-icons": "^4.8.0", "sharp": "^0.32.1", "swr": "^2.1.5", "typescript": "5.0.2" }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.57.1", "eslint-config-prettier": "^8.8.0", "husky": "^8.0.3", "lint-staged": "^13.2.1", "prettier": "^2.8.7", "sass": "^1.62.0" } }
内容的提问来源于stack exchange,提问作者DrGregoryHouse
相关产品推荐
相关产品推荐

