Получение «500 Внутренняя ошибка сервера» при пост-запросе к конечной точке Firebase-Cloud-Function - PullRequest
1 голос
/ 26 мая 2019

Я пытаюсь сделать запрос POST, используя axios, к моей облачной функции firebase в форме submit в приложении реагирования.Но я получаю ошибку '500' каждый раз, когда я делаю запрос с ответом на html-странице Это приложение лучше всего работает с включенным javascriot.

ПоследнийОбновление:

Похоже, что нет проблем с кодом облачной функции.Скорее проблема реактивного компонента.Я использовал Почтальон для отправки запроса POST с заголовком prop Content-Type, установленным на application/json и отправкой тела в необработанном формате {"email": "example_email"}, и получил ожидаемый ответ от облачной функции.Но когда я отправил запрос от компонента реагирования выше, я получил ответ в виде файла html, говорящий , приложение работает лучше всего с включенным javascript

Я попытался установить Content-Type для обоих Application/json и multipart/form-data, поскольку я подозревал, что это проблема, но все равно не повезло.

Ниже приведен мой код для облачной функции и формы отправки ответа:

Облачная функция

const functions = require('firebase-functions');
const cors = require('cors')({ origin: true })

const runThisFunc1 = require(./libs/runThisFunc1);
const runThisFunc2 = require(./libs/runThisFunc2);

exports.wizardFunc = functions.https.onRequest((request, response) => {

   cors(request, response, () => {
     let email = request.body.email;
     try {
       return runThisFunc1(email)
        .then(data => {
          console.log("Word Done by 1!");
          return runThisFunc2(data);
        })
        .then(res => {
          console.log("Word Done by 2!");
          return response.status(200).send("Success");
        })
        .catch(err => {
          console.error("Error: ", err.code);
          return response.status(500).end();
        });
     }catch(err) {
       return response.status(400).end();
     }
   });

});

Фрагмент компонента React-Form-Component

import axios from 'axios'

...

handleSubmit = e => {
  e.preventDefault()
  const { email } = this.state
  axios({
    method: 'post',
    url: `${process.env.REACT_APP_CLOUD_FUNCTION_ENDPOINT}`,
    data: { email: email },
    config: {
      headers: {
        'Content-Type': 'multipart/form-data'
      }
    }
  })
    .then(res => {
      //do something with reponse here
    })
    .catch(error => {
      console.error(error)
    })
}

...

Что-то не так, я делаю в коде или неправильная конфигурация запроса?

1 Ответ

0 голосов
/ 26 мая 2019

Не уверен, почему вы это сделали

 const { email } = this.state

Можете ли вы заменить его и попробовать

 const email = this.state
...