如何使用AWS S3托管静态express / nodeJS页面?

时间:2017-12-12 23:23:52

标签: node.js amazon-web-services express amazon-s3

我是nodejs / express / coding的新手,所以我很抱歉,如果这不是非常清楚的话。我正在为一份工作做一个代码挑战。

我完成了大部分项目。部分挑战是将其上传到S3上的存储桶。我创建了一个桶,这一切都已完成。我的问题是需要在存储桶的根文件夹中有一个index.html(我认为)。我的所有html页面(其中三个)都位于views目录中。当我尝试将我的index.html放在cloud9的根文件夹中时,它说在index目录中找不到index.html(显然,因为我把它移出了)。我可以将views目录设置为根文件夹吗?

express / nodeJS有没有办法让根文件夹中的所有文件?或者有没有办法保存我的视图文件夹,就像在Cloud9中一样,除了在S3之外,所有内容都像从那里一样运行?我肯定错过了什么。我完全迷失了如何在S3上托管这个应用程序。在这里发帖是我的最后一招!谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

让我们订购。 Amazon S3是云文件存储服务。它还可用于托管网站的静态资产

据我所知,你正在用express创建一些东西,使用view目录,一般用于模板,所以,我想,你是通过快速应用程序渲染你的html页面。这称为服务器端渲染,与只能提供文件的amazon s3完全不兼容。

现在,您如何解决问题(考虑到您有义务使用s3)?这取决于。

如果您使用快速来呈现您的应用并提供静态资源(所以没有API ),您应该考虑进行一些重构:在这种情况下,您是基本上没有API构建Web应用程序。你不需要快递。也许你正在寻找像Vue.js,React或Angular这样的客户端框架。更一般地说,您应该呈现您的应用程序客户端。

如果您的快速服务器也充当api服务器,您应该划分您的项目。从一端你就有你的快速api服务器,部署在某个地方。另一方面,您拥有自己的网络应用,客户端呈现

还有另一种解决方案:您可以使用像this这样的预呈现来从您的快速应用程序生成静态资产。但是,如果您是网络开发的新手,我建议您不要评估此选项

答案 1 :(得分:0)

将静态文件移动到S3时,需要相应地设置相对路径。

  

我可以将views目录设置为根文件夹吗?

没有。而是在S3中组织文件,其中index.html是根,而文件是路径,例如从根文件夹中获取的js / css / images /。

注意:了解您无法在S3中运行NodeJS,而是使用S3的内部Web托管来提供静态内容非常重要。

相关问题