使用Elastic Beanstalk AWS部署Angular 6 Universal

问题描述 投票:1回答:1

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

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

我在部署时遇到了问题。我的部署总是失败。我不知道如何部署生成版本的已编译角度以及Nodejs服务器文件。我谷歌搜索,我无法找到一个合适的解决方案。

我做的步骤:

  1. 新的我的应用程序 - 路由
  2. 添加@ ng-toolkit / universal
  3. 几个文件中是否需要更改
  4. 执行命令以编译生产版本并生成服务器文件
  5. / dist文件夹使用浏览器和服务器版本创建

文件夹结构如下所示:

folder structure

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

我终于找到了问题,我创建了这个线程,以便它可以帮助其他人。

angular amazon-web-services typescript elastic-beanstalk angular-universal
1个回答
1
投票

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是测试版,它可能有bug。
  2. 所以打开package.json文件并将“@ ng-toolkit / universal”:从依赖项移到devDepedencies

而已!现在部署,您的应用程序应该工作。如果您遇到此部署的任何问题或其他最佳做法,请与我们联系。

© www.soinside.com 2019 - 2024. All rights reserved.