我一直在努力创建服务器端渲染的React应用程序。我遇到了Next.js,这似乎很好地满足了我的目的。
我编写的应用程序的主页上包含一些URL,单击它们中的任何一个都将转到另一页。
例如,如果我的本地服务器在端口3000上运行,并且有一个超级链接Dogs(重定向到http://localhost:3000/dogs),则可以正常工作。我已经使用“下一个构建”来构建应用程序进行部署。
但是,当我使用Scandium部署应用程序后,其阶段名称为-'default',因此无法重定向到Dogs页面,即我的API已部署在https://wznim1ehcc.execute-api.us-east-2.amazonaws.com/default上,请单击Dogs页面它重定向到https://wznim1ehcc.execute-api.us-east-2.amazonaws.com/default/dogs,但实际上重定向到https://wznim1ehcc.execute-api.us-east-2.amazonaws.com/dogs-未添加阶段名称。
即使我手动转到https://wznim1ehcc.execute-api.us-east-2.amazonaws.com/default/dogs,也可以看到服务器端HTML和CSS,但是它无法进行所需的API调用来检索图像。例如:通过检查“检查元素”的“网络”选项卡进行检查后,要显示图像,则发送的呼叫为https://wznim1ehcc.execute-api.us-east-2.amazonaws.com/_next/static/lftZapS7NBuFYCIfncOTk/pages/dogs.js,但失败。
但是,向其添加阶段名称,并将调用更改为https://wznim1ehcc.execute-api.us-east-2.amazonaws.com/default/_next/static/lftZapS7NBuFYCIfncOTk/pages/dogs.js确实会返回响应。
似乎没有将阶段名称添加到url和API调用中,因此,请求失败。
我无法调试为什么会这样。我不确定是由于服务器端渲染Next.js还是由于API Gateway的配置而导致错误。
任何帮助将不胜感激。谢谢!
您可以在以下位置找到我的工作:https://github.com/saumyadoshi/serverless-side-rendering-react-next
您可以简单地下载存储库,运行“ npm install”以安装所有依赖项,进行“ npm run build”,以创建生产版本。
您可以使用'npm install --global scandium'全局安装Scandium(我没有在package.json中添加它)。
假设您已配置好AWS配置,只需运行“ scandium create”,它将执行需要的操作并返回已部署API端点的API网关。