【发布时间】:2016-11-20 20:29:13
【问题描述】:
是否可以在不使用专用服务器的情况下使用 amazon s3 来提供 angular 2 应用程序。如果是,如何进行?
【问题讨论】:
是否可以在不使用专用服务器的情况下使用 amazon s3 来提供 angular 2 应用程序。如果是,如何进行?
【问题讨论】:
不,在没有专用服务器的情况下,无法使用 amazon s3 运行 angular2。根据Angular2 Docs,您至少需要很少的服务器来运行这些文件。您可以做的是在 E3 或 ESB 上运行 NodeJs 服务器,并在那里部署您的 angular2 应用程序。
感谢@Gunter 指出 - 如果没有额外的命令行参数,这是无法完成的。
【讨论】:
file:///... url 加载它。您可能需要启用HashLocationStrategy,因为默认的PathLocationStrategy 需要服务器支持。
这是可能的。但是你应该使用webpack。
配置应用以使用 webpack 后,您可以 npm run build 并将处理后的文件上传到 S3 as a static website。
【讨论】:
npm run build 并将/dist 的内容上传到已经设置好的aws s3 网站存储桶来快速启动并运行它。谢谢乔乔。
--prod 选项,您不应直接从 amazonS3 提供文件,因为它是存储服务而不是分发服务。
是的,您可以将应用程序部署到 AmazonS3,但您不应该直接从 Amazon S3 提供它:S3 是一种存储服务,而不是一种分发服务。这就是您应该为您的 S3 存储桶创建 CloudFront 分配的原因。
步骤:
使用npm run build --prod 构建您的应用程序(小心包含--prod 选项!)
为您的 Amazon S3 存储桶创建 CloudFront 分配并将您的 Default Root Object 设置为 index.html
如果您使用 url 重写而不是哈希策略(您的路径看起来像 http://yourwebsite/login 而不是 http://yourwebsite/#/login,请使用以下内容为您的 CloudFront 分配创建自定义错误响应:
HTTP 错误代码:404
错误缓存最小 TTL(秒):0
在将应用程序部署到 CloudFront 上的 Invalidate index.html 时还需要小心,否则旧版本会被缓存并提供给客户端。
【讨论】: