Node/Express 应用未响应 post 方法

Node/Express app not responding to post method

我有一个 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/ExpressPOST方法是:

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 未找到”。 谁能知道问题出在哪里?

您应该将值的类型确定为return。 试着写 saveRecommend(rec:any):Observable<Recommend> {}type-script 中,确定 type[=18= 非常重要] 你的 functions/variables

如评论中所述,您需要订阅从返回的 Observable this.http.post...

所以至少你必须这样做。

saveRecommend('rec').subscribe();