nodeJS не может получить запрос от React API - PullRequest
0 голосов
/ 25 сентября 2018

Я получил React с внешним интерфейсом.Это мой код для вызова API

componentDidMount(){
      const jso = JSON.stringify({
        username: 'admin@etsmtl.ca',
        password: 'admin'
      })
      fetch("https://desolate-escarpment-15258.herokuapp.com/authentication", {
        method: 'POST',
        headers: {
          'Accept': 'application/json',
          'Content-Type': 'application/json'
        },
        body: jso,
      }).then(res => res.json()).then((result) => {
        this.setState({
          answer: result.answer
        })

      }, (error) => {
        this.setState({isLoaded: true, error});

      })
  }

Теперь это код с сервера nodeJS

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

//setting port
var port = process.env.PORT || 5000

//helps node to pasre JSON
app.use(bodyParser.json());

//Enabeling all Access-Control-Allow-Origin
app.use(cors());

app.get('/', function(req, res){
    res.send({answer: "hello world!"});
})

app.post('/authentication', function(req, res){
    console.log(req.body);
    res.send({answer: req.body});
})

app.listen(port, function(){
    console.log("app running");
})

Проблема: nodeJS не может обработать запрос от React.

Я теперь, когда соединение между обоими серверами работает, потому что я могу получить ответ, когда я делаю res.send("hello Wolrd"); в nodeJS

FYI, узелJS размещается на heroku, а реагирует на JS на AWS S3.Но мы попробовали локально, и это не сработало

Ответы [ 2 ]

0 голосов
/ 25 сентября 2018

На самом деле, я нашел способ сделать это !!В основном, мы должны предотвратить использование URL ...

var express = require('express');
var app = express();
var cors = require('cors');
var bodyParser = require('body-parser')
var mysql = require("mysql");

//setting port
var port = process.env.PORT || 5000

//helps node to pasre JSON
/*LINE BELOW HAS BEEN ADDED TO PREVENT USE OF URL*/
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json());

//etc...
0 голосов
/ 25 сентября 2018

В componentDidMount () body имеет значение jso.Измените на body: json Возможно, это сработает.

Установить app.use(cors()) как этот app.use(cors( {origin: '*' }));

У меня также была похожая проблема, когда я был в режиме сборки, я мог получить доступ к своей базе данных на бэкэнде, но когда я загружал всубдомен (Netlify), который он захватил для работы.

Это не сработало для меня в Netlify, но вы должны попытаться убедиться, что это может работать в heroku.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...