提问者:小点点

无法获取/节点js


我正在尝试开始使用connect为一些静态网页提供服务,如下所示:

const express = require ('express');
const bodyParser = require ('body-parser');
const cors = require ('cors');

const app = express();
const port = 3000;

app.use(bodyParser.text());
app.use(cors());

app.post('/api/pesan', (req, res) => {
    console.log(req.body);
    res.status(200).send();
})

app.listen(port, () => console.log('Aplikasi berjalan di port', port));

这是我的app.component.ts。

import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  pesan = '';

  constructor (private http: HttpClient){}

  kirim(){
    console.log(this.pesan);
    this.http.post('http://localhost:3000/api/pesan', this.pesan).toPromise();
    }

 )

我创建了newfolder/backend并将server.js放在那里。 我想用app.component.html连接节点,但我得到了以下错误


共1个答案

匿名用户

据我所知,你想做两件事:

  1. 创建API并返回已发布的数据。
  2. 从前端调用API端点并console.log(。。。)数据

下面是一个更新后的代码,应该可以工作,以及为什么以前不能工作:

我只是返回了数据

const express = require ('express');
const bodyParser = require ('body-parser');
const cors = require ('cors');

const app = express();
const port = 3000;

app.use(bodyParser.text());
app.use(cors());

app.post('/api/pesan', (req, res) => {
    console.log(req.body);
    // UPDATED: This time, we return the data you passed
    res.status(200).send(req.body);
})

app.listen(port, () => console.log('Aplikasi berjalan di port', port));

您实际上能够正确地调用端点,但没有对使用.toPromise()创建的promise执行任何操作。 我更新了代码来处理这个问题。

import { Component } from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  pesan = '';

  constructor (private http: HttpClient){}

  kirim(){
    this.http.post('http://localhost:3000/api/pesan', this.pesan)
       .toPromise()
       .then(response => { 
          const data = response.json();
          console.log(data); 
       });
  }

}