我正在 AWS 上开发 Angular 6 Universal。我的网站托管在 AWS 上,并使用 Elastic Beanstalk 进行部署。
我的 Angular 6 Universal 应用程序是使用 @ng-toolkit/universal 使用 Angular CLI 创建的,它会自动在应用程序中添加所需的服务器配置。
我在部署时遇到了问题。我的部署总是失败。我不知道如何部署已编译的 Angular 的生产版本以及 Nodejs 服务器文件。我用谷歌搜索,但找不到合适的解决方案。
我所做的步骤:
- ng new my-app --routing
- ng add @ng-toolkit/universal
- 是否需要对几个文件进行更改
- 运行命令来编译生产版本并生成服务器文件
- /dist 使用浏览器和服务器版本创建的文件夹
文件夹结构如下所示:
我尝试将 /dist 部署到服务器但失败。我尝试使用 Typescript 部署整个根文件夹,但仍然失败。
我终于找到了问题所在,并创建了这个线程,以便它可以帮助其他人。
最佳答案
Elastic Beanstalk 默认情况下会尝试先运行 Server.js 文件(如果找不到),然后运行 app.js(如果找不到),然后运行命令 <强>“npm启动”
所以有两种解决方案
- 文件local.js(由@ng-toolkit创建)运行nodejs服务器。因此,您可以将其重命名为 server.js 或 app.js,以便 EB 在成功部署后执行它,然后使用 将整个根文件夹部署到您的服务器“eb 部署” 命令。
- 或者将 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 );
});
最后也是重要的一步。
- Elastic beanstalk 部署失败并在安装 @ng-toolkit 时引发错误。由于@ng-toolkit/universal 处于测试阶段,因此可能存在错误。
- 因此,打开package.json文件并从依赖项<中移动“@ng-toolkit/universal”:/em> 到 devDepedcies
就是这样!现在部署,您的应用程序应该可以运行。如果您遇到任何问题或此部署的其他最佳实践,请告诉我。
关于angular - 使用 Elastic Beanstalk AWS 部署 Angular 6 Universal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52312612/