AWS S3可以托管静态网站,但如果直接把Vue打包后的静态文件放在S3上直接访问,会发生一些错误,以下回顾在S3上部署SPA单页面应用的出现的一些问题,以及如何解决这些问题。
-
登录页404问题
将英文版后台Vue项目打包,上传dist文件至S3上的指定存储桶,然后直接访问,登录页返回404。
S3存储桶默认情况下不会自动解析index文件,如果直接访问登录页的URL,会导致404错误。
处理方式:在S3存储桶的配置中启用静态网站托管,并将错误页面配置为index.html。当访问不存在的路径时,S3将返回index.html文件。
-
多级路由页面刷新后页面加载失败
按照以上方式对S3存储桶设置之后,登录页和根路由页面可以正常访问,多级路由页面可以正常切换,但在多级路由页面刷新的时候,页面一直处于加载状态,返回码为404。
处理方式:配置CloudFront
-
配置CloudFront
AWS S3 负责存储静态文件。 CloudFront 负责做 CDN,加速访问。
配置如下:
Cloudfront->选择项目的cdn->Error Pages->Create custom error response
-
报错:Uncaught SyntaxError: Unexpected token '<' 。
配置cloudfront后访问我们部署的网页,出现以上报错。
解决:将打包文件中的html文件中引入的静态资源路径前面加/