我已经构建了一个Java Restful API,我想从Angular 5访问它。对于开发我有角度服务器在端口4200上运行,而我的后端运行在8080.我正在尝试设置角度代理以便与后端。 所以我创建了以下proxy.conf.json文件:
{
"/**": {
"target": "http://localhost:8080",
"changeOrigin": true,
"secure": false,
"logLevel": "debug"
}
}
然后我在终端
中运行ng serve --proxy-conf proxy.conf.json
我收到了消息
Proxy created: /** -> http://localhost:8080
[HPM] Subscribed to http-proxy events: [ 'error', 'close' ]
所以到现在为止一切都很好。
当我输入浏览器网址时,例如
http://localhost:4200/incidents/all
一切正常,我得到了回复
[{ “ID”:55, “protocolNo”:121212222, “日期”:15251.22亿, “isPayed”:真 “yliko”: “fdasdfasfsaf”, “万客隆”: “FDSA”, “anoso”:” FDSA “ ”MIKRO“: ”fdsafds“, ”symperasma“: ”dfsdfsadf“, ”klinikesPlirofories“: ”fsdafds“, ”HISTO“: ”dfsadffga“, ”simpliromatikiEkthesi“: ”fdsadfsdfa“, ”患者“:{” ID “:1,” 名字 “:” Μιχαήλ “ ”姓氏“: ”Τουτουδάκης“, ”生日“: ”1975年8月19日“, ”fatherName“: ”Δημήτριος“, ”电话“: ”6948571893“,” 电子邮件“:” mixtou@gmail.com “ ”性“:真正的 ”市“:{ ”ID“:1, ”名“: ”Χανιά“}, ”医生“:{ ”ID“:1,” 名字“:” όνομα”, “姓氏”: “επίθετο”, “电话”: “2821074737”, “电子邮件”: “papa@papa.com”, “fatherName”: “πατέρας”, “专业”:{ “ID” :1, “名”: “Αγγειοχειρουργική”}, “城市”:{ “ID”:1, “名”: “Χανιά”}, “诊所”:{ “ID”:1, “名”:“Κλινική Τσεπέτη”, “电话”: “123456789”, “地址”: “Παπαναστασίου”, “电子邮件”: “test@test.com”}, “signingDoctor”:{ “ID”:1, “姓氏”: “Δασκαλάκη” “名字”: “Άννα”}, “mikroskopikaSymperasma”:空“anosoEkthesi”:空, “癌症”:真正},{ “ID”:56, “protocolNo”:11111, “日期”:1525640400000, “isPayed”:假的, “yliko”: “dfsadfs”, “万客隆” : “dfsfsdfdsdfsadfsa”, “anoso”: “dfsdfsfdssfafasd”, “MIKRO”: “dsfdfsadfsadfssdf”, “symperasma”: “σδγσδγσαδγσγσασδγ”, “klinikesPlirofories”: “δδφφγφγαφαγ”, “HISTO”: “fdsasdfd”, “simpliromatikiEkthesi”:” γαγσαδσγσδγσδαγ “ ”患者“:{ ”ID“:5, ”名字“: ”Στέφανος“, ”姓氏“: ”Μαριόλος“, ”生日“: ”2018年3月26日“, ”fatherName“: ”“,”电话 “:” 4838583845" , “电子邮件”: “”, “性”:真正的 “市”:{ “ID”:2, “名”: “Ρέθυμνο”}, “医生”:{ “ID”: 3, “名字”: “Χαράλαμπος”, “姓氏”: “Πρωτοπαπαδάκης”, “电话”: “4343454345”, “电子邮件”: “”, “fatherName”: “”, “专业”:{ “ID”:29 ,“名称”:“Πνευμονολογία - Φυματιολογία”},“city”:{“id”:1,“name”:“Χανιά”}},“诊所”:{“id”:1,“name”:“Κλινική Τσεπέτη “ ”电话“: ”123456789“, ”地址“: ”Παπαναστασίου“, ”电子邮件“: ”test@test.com“},” 显ngDoctor “:{” ID “:1,” 姓氏 “:” Δασκαλάκη”, “名字”: “Άννα”}, “mikroskopikaSymperasma”: “γσαγδσασαδγδασγαγσγσ”, “anosoEkthesi”: “φδαφγφγφδσγ”, “癌症”:真}]
然而,从角度访问后端终点我什么都没得到。 例如,对于事件,我有以下服务:
getIncidents(): Observable<Incident[]> {
console.log('getting incidents');
const incidentsUrl = '/incidents/all';
return this.http.get<Incident[]>(incidentsUrl)
.pipe(catchError(ErrorHandler.handleError));
}
在javascript控制台中生成以下错误:
core.js:1440 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'push' of undefined
TypeError: Cannot read property 'push' of undefined
在以下行:
this.subscriptions.push(this.incidentsService.getIncidents().subscribe((results) => {
this.comService.sendIncidents(results);
this.spinner.hide();
}));
这意味着this.incidentsService.getIncidents()什么都没有回复?
任何想法?
答案 0 :(得分:0)
我删除了this.subscriptions.push(...)
操作,一切正常。为什么在使用订阅时会发生这种情况。我需要它们,因为onDestroy我调用subscription.unsubsribe()
以避免内存泄漏。
请注意,使用代理时会发生这种情况如果我不使用代理并将项目部署到tomcat一切正常。我在push()中没有null
。
任何想法???
问题出在订阅声明上。最初是:
subscriptions: Subscription[];
我把它改成了
subscriptions: Subscription[] = [];
一切正常。
subscriptions
未初始化。