如何使用nextjs

时间:2019-10-20 03:42:35

标签: javascript reactjs amazon-web-services next.js

我还是React的新手,我开始使用Nextjs编写一个静态网站。但是,当我想部署到AWS S3时,会遇到一些问题。我以前只使用webpack,当我输入yarn build时,我得到了一个dist文件,将dist文件中的内容上传到S3存储桶对我来说很容易。

但是,在将Nextjs用于SSR之后,我发现在构建项目后,我得到了一个.next文件,其中包含cacheserverstatic子文件以及{ {1}},BUILD_IDbuild-manifest.jsonreact-loadable-manifest.json。我不知道应该上传到S3的内容以及这些文件的含义。

这可能是一个愚蠢的问题,但是我已经花了超过一天的时间来寻找解决方案。

2 个答案:

答案 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