【问题标题】:launching angular and node separately but with connection to each other分别启动角度和节点但相互连接
【发布时间】:2017-07-21 04:33:16
【问题描述】:

因此,仅出于生产测试的目的,我不得不拆分使用 angular 1.x 编写的前端客户端和我的节点后端服务器代码。客户端使用节点提供的 api 功能,但它们在我本地机器上的不同服务器上运行。我将节点服务器设置为在端口 5000 上运行,当它运行时,我的角度服务器向我提供了它必须移动到端口 5001 的信息,因为端口 5000 已经被占用。

如何启动两个服务器并强制它们在我的本地计算机上共享 API 功能?

对于我使用“服务”的角度 -> https://github.com/angular/angular-cli/wiki/serve

【问题讨论】:

  • 您想在同一个端口上运行客户端服务器(角度)和节点服务器(nodejs)吗?您不能在同一端口上运行两台服务器:/
  • 所以从技术上讲,不可能在不同的服务器上分别运行客户端和服务器端代码,而是在使用 API 函数方面相互连接?
  • 什么限制让你在同一个端口上运行两个服务器?如果两者都在同一个端口上运行,但在不同的上下文中,例如 UI 在 localhost:5000/ui 上运行,而 API 在 localhost:5000/api 上运行,这对你有用吗?
  • 你不能让两个应用程序在同一个 ip 的同一个端口上监听。但你肯定可以连接它们。这就是大多数大型项目所做的。在组合设置中,您不会直接通过其端口访问各个应用程序,而是使用反向代理,例如 nginx,例如将以/api 开头的所有内容转发到您的节点应用程序,并将其他所有内容转发到您的角度应用程序。
  • 我想你误解了我的评论,先告诉我你有什么,你想要什么?你有两个服务,你想在同一个端口上运行?您可以在具有不同端口的同一台机器上运行两个服务。

标签: javascript angularjs node.js deployment


【解决方案1】:

您只需要更改客户端的端口,

为此,请编辑您的 angular-cli.json

{
..............
"defaults": {
    "styleExt": "css",
    "component": {},
    "serve": {
            "port": 5001
        }
  }
.................
}

当您执行服务时,它将在端口 5001 上运行您的 angularjs 服务器

【讨论】:

    【解决方案2】:

    这不是答案,但由于我无法添加 cmets,所以我不得不在这里写。

    如果您已经在使用 Vagrant,请忽略本文的其余部分。

    这只是一个选项,可让您通过设置 vagrant 实例在同一端口上使用两个应用程序。

    为您的节点应用程序设置 Vagrant。配置 Vagrantfile 以将 host:5001 转发到 guest:5000。

    config.vm.network :forwarded_port, guest: 5001, host: 5000
    

    您可以继续在主机(localhost)机器上托管 Angular 应用程序。然后可以将对您的 API 的请求转发到 vagrant 实例。

    如果您的 Angular 应用程序和 api 已经被不同的域分隔,那么您可以更新本地计算机上的主机文件,以将域请求重写到您的 vagrant 计算机。

    【讨论】:

      猜你喜欢
      • 2022-01-25
      • 1970-01-01
      • 2012-06-17
      • 1970-01-01
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      相关资源
      最近更新 更多