【问题标题】:Node-red HTTP GET Request in Angular 4 webappAngular 4 webapp中的节点红色HTTP GET请求
【发布时间】:2019-03-20 00:46:54
【问题描述】:

我正在构建一个使用 Node-red 的服务,仅在向 127.0.0.1:1880/hello(node-red 端口)发出 GET 请求时发送电子邮件被触发并且 Angular 4 webapp (127.0.0.1:3000) 访问客户端。

当我从 浏览器 访问 thr /hello 页面时,我在我的个人电子邮件帐户中收到一封来自 node-red 的电子邮件。

问题是当按下按钮测试对node-red的http get请求时,什么都没有发生。

使用 Ubuntu 16.04 LTS

节点 8.15

npm 6.4

Node-RED 0.20.2

节点红色流:

NODE-RED FLOW SEND EMAIL IMAGE

[{"id":"35dcdbd9.a99684","type":"tab","label":"流 1","disabled":false,"info":""},{"id":"dcdb9a4e.db2eb8","type":"debug","z":"35dcdbd9.a99684","name": "","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":450," y":180,"wires":[]},{"id":"aa98d38f.846af","type":"e-mail","z":"35dcdbd9.a99684","server":"smtp .gmail.com","port":"465","secure":true,"tls":true,"name":"andre.def93@gmail.com","dname":"","x" :500,"y":320,"wires":[]},{"id":"f1aea493.ec0e78","type":"http 响应","z":"35dcdbd9.a99684","name":"","statusCode":"","headers":{},"x":670,"y":260,"wires": []},{"id":"747c3f58.892dd","type":"http 在","z":"35dcdbd9.a99684","name":"","url":"/hello","method":"get","upload":false,"swaggerDoc":"", "x":120,"y":260,"wires":[["dcdb9a4e.db2eb8","aa98d38f.846af","f1aea493.ec0e78"]]}]

Angular 4.1.3 应用

我的组件.ts:

[...]
import { Http } from '@angular/http';
[...]
    constructor(
        private http: Http,
        [...]
    ) { }
[...]
    test(){
       this.http.get('http://127.0.0.1:1880/hello');
    }
[...]

我的组件.html:

[...]
<button class="primary" (click)="test()">
    <div *ngIf="!issueInProgress">
        <span>TEST</span>
    </div>
</button>
[...]

谢谢大家!

【问题讨论】:

    标签: angular typescript node-red angular4-httpclient


    【解决方案1】:

    有很多可能的问题。 首先,我推荐你使用http客户端。

    (在应用模块中):

    import { HttpClientModule } from '@angular/common/http';
    imports: [ .. ,HttpClientModule, .. ]
    

    (在Component.ts中(在服务中更好)

    import { HttpClient } from '@angular/common/http';
    
    .... 
    
     constructor(private http: HttpClient){}
    
    test(){
     this.http.get<any>('http://127.0.0.1:1800/hello').subscribe(data=>{
     console.log("Work, recive: " + data);
    },
    err =>{
     console.log("Err, recive: " + err);
    },
    () => {
     console.log("Finish");
    });
    }
    

    通过这种方式,您将能够看到错误是什么以及为什么它不起作用。

    如果是 CORS 错误,请尝试:
    https://github.com/node-red/node-red/issues/1347#issuecomment-363451534

    https://thefrinkiac7.wordpress.com/node-red/enable-cors-with-node-red/

    :) 再见!

    【讨论】:

    • 谢谢伙计,但我认为由于我的 Angular 版本 4.1.3,我无法使用 import { HttpClientModule } from '@angular/common/http';我尝试更新将“^”放在 package.json 中角度依赖项的前面,但这破坏了 webapp 的许多部分。您认为有其他方法可以在 Angular 4.1.3 中使用 http get 请求而不进行更新吗?再次感谢
    • 有效,但使用 import { HttpModule } from '@angular/http'; (模块)并从'@angular/http'导入{Http}; this.http.post('127.0.0.1:1880/hello',{ "to": "andre.def93@gmail.com", "topic":"收到新修订版" }).subscribe(data=>{ console.log("工作,recive: " + data); }, err =>{ console.log("Err, recive: " + err); }, () => { console.log("Finish"); });谢谢老哥!
    • 太棒了!抱歉耽搁了
    猜你喜欢
    • 1970-01-01
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-30
    相关资源
    最近更新 更多