Node/Express应用程序未响应post方法



我有一个Node/Express后端在监听Angular8前端。但是,当我尝试从angular客户端向POST方法发送数据时,服务器没有响应。该函数不会显示已到达,也不会向控制台打印任何消息。angular8服务中的功能是:

import { Injectable } from '@angular/core';
import { Recommend } from '../classes/recommend';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class RecommendsService {
url:string = "http://localhost:3000/recommend/";
constructor(private http:HttpClient) { }
saveRecommend(rec:any)  { 
return  this.http.post<Recommend>(this.url + "saveRecommend", rec);
}
}

Node/Express POST方法为:

var express = require('express')
var router = express.Router()
var recommendDomain = require('../domain/recommend');
router.post('/saveRecommend', async function(req, res){
console.log("I am here")
var response = await recommendDomain.addRecommend(req.body);
res.send(response);
})
module.exports = router;

我配置路由器的app.js页面是:

var express = require('express')
var bodyParser = require('body-parser')
var cors = require('cors')
var app = express()
app.use(bodyParser.json())
app.use(cors())
app.use(express.static('public'))

console.log("server 1")
var recommendAction = require('./action/recommend')
app.use('/recommend', recommendAction);
app.get('/', (req, res) => res.send('Api Project Works'))
module.exports = app

我的应用程序中其他类似的POST和GET方法确实可以正常工作。但最烦人的是,在浏览器中运行应用程序在控制台中不会显示任何错误。即使不是"404未找到"。有人知道可能是什么问题吗?

正如评论中所说,您需要订阅从this.http.post...

所以至少你必须这样做。

saveRecommend('rec').subscribe();

您应该确定要返回的值的类型。试着写saveRecommend(rec:any):Observable<Recommend> {}类型-脚本中,确定函数/变量的类型是非常重要的

最新更新