无法找到HTML页面,Gatsby使用及S3静态站点上传问题咨询
解决Gatsby静态站部署到S3的文件上传问题
兄弟,我来帮你理清这个问题:
为什么直接打开public/index.html会显示黑页?
这是正常现象,不用紧张。Gatsby构建后的静态资源默认使用根相对路径(比如/static/js/main.[hash].js),当你用本地文件协议(file://)打开index.html时,浏览器会从本地文件系统的根目录去查找这些资源,而不是从public文件夹内部读取,导致所有依赖的JS、CSS、图片都加载失败,页面自然就成黑的了。部署到服务器(比如S3)后,这个问题就会消失。
部署到S3需要上传哪些文件?
你需要把整个public文件夹里的所有内容(包括里面的所有文件和子文件夹,比如static/、index.html、404.html、各个路由对应的HTML文件等)全部上传到S3的静态网站存储桶中。绝对不能只传单个index.html,因为页面运行依赖的所有静态资源都在public的子目录里。
补充S3部署的关键配置
上传文件后,记得在S3存储桶的配置里完成这几步:
- 开启静态网站托管功能,将
index.html设置为默认索引文档 - 将
404.html设置为错误文档——因为Gatsby采用客户端路由,当用户直接访问子路径(比如your-domain.com/about)时,S3会先尝试查找对应文件,找不到就返回404,这时候需要让S3返回404.html,由Gatsby的路由系统处理并展示正确页面 - 确保所有上传的文件权限设置为公开可读,否则用户访问时会遇到权限错误
内容的提问来源于stack exchange,提问作者elfranco
相关产品推荐
相关产品推荐

