7

在我的package.json文件中,我有:

"scripts": {
  "start": "concurrently \"ng serve --host something.mydomain.com --port 4200 --live-reload false --env=prod\" \"gulp\""
},

当我运行npm start几秒钟后,我可以在浏览器中访问我的项目http://something.mydomain.com:4200

我宁愿通过直接访问https://something.mydomain.com来访问同一个系统(即没有端口号)

我已将 package.json 修改为:

"scripts": {
  "start": "concurrently \"ng serve --host something.mydomain.com --port 80 --live-reload false --env=prod\" \"gulp\""
},

但是当我跑步时,package.json我得到:

端口 80 已在使用中。使用“--port”指定不同的端口。

如果我运行,lsof -i :80那么什么都不会出现,所以我确定端口 80 没有被占用。我怀疑问题是端口 80 是受保护的端口,当我登录时,ec2-user我没有正确的权限?

如何通过端口 80 运行我的项目?

4

2 回答 2

14

就个人而言,我不会使用 Angular CLI(ng serve命令)在生产环境中提供 Angular 应用程序。更好的选择是构建项目 ( ng build) 并提供dist文件夹。这样做您将拥有一个更快的应用程序,因为它不会“即时编译”,也不会与 Angular CLI 交互。

但是,如果您想坚持自己的方法,为了在标准端口上运行应用程序(因此无需指定;HTTP 网站为 80,HTTPS 网站为 443),您将不得不根据您使用的 Angular 版本修改不同的文件:

  • >= 角度 6:

    编辑angular.json文件并在serve对象中(在<yourProjectName>对象下),添加这段代码:

    "options": { "port": 80 }

  • 角度 < 6.0:

    编辑angular-cli.json文件并在defaults对象中添加这段代码:

    "serve": { "port": 80 }

编辑:如果使用ng serve --prod命令提供应用程序,将打印以下警告:

**************************************************************************************** 
This is a simple server for use in testing or debugging Angular applications locally. It hasn't been reviewed for security issues.

DON'T USE IT FOR PRODUCTION!
****************************************************************************************
于 2018-09-06T16:40:02.597 回答
5

我将假设您正在终端中运行您的项目。尝试sudo在 ng serve 之前添加,因为端口 80 需要以 root 身份运行。

于 2018-09-06T16:16:30.307 回答