首页 > 解决方案 > 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 not found'。谁能知道问题可能是什么?

标签: node.jsexpressangular8

解决方案


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

所以至少你必须这样做。

saveRecommend('rec').subscribe();


推荐阅读