在我的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端口运行项目?
答案 0 :(得分:3)
我个人不会使用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 }
答案 1 :(得分:1)
我将假定您正在终端中运行项目。
尝试在ng服务之前添加sudo
,因为端口80需要以root身份运行。