【问题标题】:Passing local node JS HTTP server port (running in electron) to angular service将本地节点 JS HTTP 服务器端口(在电子中运行)传递给角度服务
【发布时间】:2017-09-06 23:08:09
【问题描述】:

我在电子应用程序的本地主机上运行 RESTful 节点 JS Http 服务器。我在端口 0 上监听,以便操作系统给我一个随机的空闲端口。如何访问我的 Angular 代码中的 givin 端口,以便能够知道我必须在哪个 URL 上执行 XHTTP 请求?

restapi 服务器 (nodejs) 在 127.0.0.1:0 上运行

var listener = app.listen(port, server, function() {
        port = listener.address().port;
        console.log('Listening on port ' + port + '@' + server); 
    });

XHTTP 角度调用

private heroesUrl = 'http://localhost:1337/api/heroes';

getHeroes(): Promise<Hero[]> {
    return this.http.get(this.heroesUrl).toPromise()
        .then(
            ((response) => response.json() as Hero[])
            )
        .catch(this.handleError);   
}

知道如何将固定端口 1337 替换为在服务器端打开侦听器时获得的端口吗?

或者我应该只使用两侧的固定端口并希望它免费?对我来说听起来不对。

我也不能只使用“/api/heroes”作为 URL,因为 electron/angular 正在 http://localhost:4200(ng serve)上运行。

【问题讨论】:

    标签: angularjs node.js angular xmlhttprequest electron


    【解决方案1】:

    在使用这种设置进行开发时,我通常使用固定端口,这样我就不用担心配置动态端口了。此外,根据您的 Angular 应用程序的配置方式,您可能需要设置代理。例如,如果您使用 angular-cli,以下是如何实现请求的功能。

    https://github.com/angular/angular-cli/blob/d22e9ae73763923980fc1e59cfb2a0bf255b98d8/docs/documentation/stories/proxy.md

    【讨论】:

    • 如果我使用静态端口一切正常,但我真的不想这样做,因为我认为这不是一个最佳决定。如果我要使用代理的东西,我需要动态编辑代理json文件,可以吗?
    • @capc0 为什么你认为使用动态端口比使用静态端口更好?它不是我以前见过的模式。我猜你可以创建某种 bash 脚本,从一台服务器获取端口输出并使用动态创建的代理 json 文件启动 angular 应用程序。但除非我遗漏了什么,否则我认为您使用非固定端口让事情变得过于复杂
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2017-01-02
    • 2016-11-07
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    相关资源
    最近更新 更多