使用 Elastic Beanstalk AWS 部署 Angular 6 通用

Deploying Angular 6 Universal using Elastic Beanstalk AWS

我正在研究 Angular 6 Universal on AWS。我的网站托管在 AWS 上,我使用 Elastic Beanstalk 进行部署。

我的 Angular 6 通用应用程序是使用 @ng-toolkit/universal 使用 angular CLI 创建的,它会自动在应用程序中添加所需的服务器配置。

我遇到了 deployment.My 部署总是失败的问题。我不知道如何部署已编译 angular 的生产版本以及 Nodejs 服务器文件。我 google 进行了搜索,但找不到合适的解决方案。

我执行的步骤:

  1. ng new my-app --routing
  2. ng 添加@ng-toolkit/universal
  3. 是否需要对几个文件进行更改
  4. 运行编译生产版本和生成服务器文件的命令
  5. /dist 使用浏览器和服务器版本创建的文件夹

文件夹结构如下所示:

我尝试将 /dist 部署到服务器但失败了。我尝试使用 Typescript 部署整个根文件夹,但仍然失败。

我终于弄明白了这个问题,我创建了这个帖子,以便它可以帮助其他人。

Elastic Beanstalk 默认会先尝试 运行 Server.js 文件,如果找不到则 app.js 如果找不到则 运行 命令 "npm start"

所以有2个解

  1. 文件local.js(由@ng-toolkit 创建)运行是 nodejs 服务器。所以你要么将它重命名为 server.js 或者 app.js 这样 EB 就会在成功部署后执行它,然后部署使用 "eb deploy" 命令将整个根文件夹复制到您的服务器。
  2. 或者将 local.js 复制到 /dist 文件夹并将其重命名为 app.js/server。 js 并编辑文件以更改目录 "./server_filename"

// generated by @ng-toolkit/universal
    const port = process.env.PORT || 8080;
    
    const server = require('./_server'); <!-- Renamed to _server -->
    
    server.app.listen(port, () => {
        console.log("Listening on: http://localhost:" + port );
    });

最后也是重要的一步。

  1. Elastic beanstalk 部署失败并在@ng-toolkit 安装时抛出错误。由于@ng-toolkit/universal 处于测试阶段,它可能有错误。
  2. 所以打开package.json文件并移动"@ng-toolkit/universal":dependenciesdevDepedencies

就是这样!现在部署,您的应用程序应该可以工作了。如果您遇到任何问题或此部署的其他最佳实践,请告诉我。