我还是React的新手,我开始使用Nextjs编写一个静态网站。但是,当我想部署到AWS S3时,会遇到一些问题。我以前只使用webpack,当我输入yarn build
时,我得到了一个dist文件,将dist文件中的内容上传到S3存储桶对我来说很容易。
但是,在将Nextjs用于SSR之后,我发现在构建项目后,我得到了一个.next
文件,其中包含cache
,server
和static
子文件以及{ {1}},BUILD_ID
,build-manifest.json
,react-loadable-manifest.json
。我不知道应该上传到S3的内容以及这些文件的含义。
这可能是一个愚蠢的问题,但是我已经花了超过一天的时间来寻找解决方案。
答案 0 :(得分:1)
您可以如下更改package.json。
"build": "next build && next export",
然后,您可以运行“纱线构建”。它将在您的项目中生成顶级目录/ out。为了方便起见,使用命令上载文件夹中的所有内容。
aws s3 sync ./out s3://your-s3-bucket-name
确保已将您的存储桶设置为提供静态网站服务,并具有以下存储桶策略。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicReadGetObject",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::your-bucket-name/*"
},
]
}
答案 1 :(得分:0)
原始问题非常古老,如果您是通过搜索到达此处并收到Error: Cannot export when target is not server
的-请确保您删除了目标
target: 'serverless'
中的next.config.js
否则,请按照@ R.Cha https://stackoverflow.com/a/62465471/13749957的回答,此处总结了此处的文档并添加了S3的特定步骤-https://nextjs.org/docs/advanced-features/static-html-export