将本地节点 JS HTTP 服务器端口(在电子中运行)传递给角度服务
Posted
技术标签:
【中文标题】将本地节点 JS HTTP 服务器端口(在电子中运行)传递给角度服务【英文标题】:Passing local node JS HTTP server port (running in electron) to angular service 【发布时间】: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)上运行。
【问题讨论】:
【参考方案1】:在使用这种设置进行开发时,我通常使用固定端口,这样我就不用担心配置动态端口了。此外,根据您的 Angular 应用程序的配置方式,您可能需要设置代理。例如,如果您使用 angular-cli,以下是如何实现请求的功能。
https://github.com/angular/angular-cli/blob/d22e9ae73763923980fc1e59cfb2a0bf255b98d8/docs/documentation/stories/proxy.md
【讨论】:
如果我使用静态端口一切正常,但我真的不想这样做,因为我认为这不是一个最佳决定。如果我要使用代理的东西,我需要动态编辑代理json文件,可以吗? @capc0 为什么你认为使用动态端口比使用静态端口更好?它不是我以前见过的模式。我猜你可以创建某种 bash 脚本,从一台服务器获取端口输出并使用动态创建的代理 json 文件启动 angular 应用程序。但除非我遗漏了什么,否则我认为您使用非固定端口让事情变得过于复杂以上是关于将本地节点 JS HTTP 服务器端口(在电子中运行)传递给角度服务的主要内容,如果未能解决你的问题,请参考以下文章