【问题标题】:Angular/CLI: How to change the port for auto reload?Angular/CLI:如何更改自动重新加载的端口?
【发布时间】:2018-02-13 14:59:38
【问题描述】:

据我了解,在运行 ng serve 时,Angular 应用程序会轮询开发服务器以了解是否需要重新加载。此服务器预计位于端口 4200(默认)上。

我运行一个包含多个 docker 容器的开发环境,以保持良好和隔离。所以我的一些 Angular 应用程序监听不同的端口。这似乎导致每隔几秒钟在我的浏览器控制台中出现以下错误消息:

zone.js:2744 GET http://localhost:4200/sockjs-node/info?t=1518533495440 net::ERR_EMPTY_RESPONSE

我在哪里可以更改配置以将实时重载客户端指向正确的方向? angular-cli.json 似乎什么也没做。

【问题讨论】:

    标签: javascript angular angular-cli


    【解决方案1】:

    我找到了解决方案。您必须使用--public-host 选项(别名:--live-reload-client)开始ng serve。所以我在

    的 package.json 中调整了我的启动命令
    "start": "ng serve --host 0.0.0.0"
    

    "start": "ng serve --host 0.0.0.0 --live-reload-client http://localhost:4400"
    

    重点是我不想更改开发服务器本身的端口。它应该在 Docker 容器的 4200 端口上运行。但是 4200 端口在 Docker 中映射到外部端口 4400(在我的情况下)。我调用http://localhost:4400 在我的浏览器中运行应用程序,重新加载客户端也应该调用http://localhost:4400 进行更新。但它叫http://localhost:4200。使用 --live-reload-client 选项一切正常。

    【讨论】:

    • 这对我有用ng serve --public-host http://localhost:4200。地址栏中的 URL 是 9090,它代理到 4200(但不能代理 websockets)
    【解决方案2】:

    您可以使用两个命令行选项配置默认 HTTP 端口和 LiveReload 服务器使用的端口:

    ng serve --host 0.0.0.0 --port 4201 --live-reload-port 49153
    

    【讨论】:

    • 这不是一个有效的选项:选项 '--live-reload-port' 没有使用 serve 命令注册。
    【解决方案3】:

    似乎 --live-reload-port 在较新的版本中不再使用。 实时重载端口与开发服务器端口相同。 所以设置--port 4201会使用4201作为实时重载端口。

    【讨论】:

      【解决方案4】:

      您可以使用--port 更改端口

      ng serve --port 4201
      

      将在端口4201上启动服务器

      【讨论】:

      • 我不想更改应用程序本身的端口。它在 4200 上的 docker 容器内部运行,但映射到外部的 4400 端口。这就是首先造成这个问题的原因。
      【解决方案5】:

      在运行您的应用程序实例时,请使用以下命令: ng serve --port 123

      而不是: 服务

      虽然 package.json 中的更改不会产生任何影响。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-11-04
        • 2016-01-21
        • 2022-01-13
        • 2015-01-20
        • 2013-10-06
        • 2013-04-05
        • 2021-03-03
        • 2013-12-08
        相关资源
        最近更新 更多