Axios POST-запрос работает только иногда (приложение MERN) - PullRequest
0 голосов
/ 10 октября 2019

Мой POST-запрос axios работает примерно в 70% случаев. Кажется, не существует паттерна между тем, какие входы работают, а какие нет (длина не имеет значения). Я попытался прочитать все вопросы стека overflow с похожими проблемами, но ничего не помогло.

    onSubmit() {
        const newInput = {
            input_text: this.state.value,
        }
        instance.post('http://localhost:4000/inputs/add/', newInput)
            .then(res => {
                console.log(res.data);
            })
            .catch(error => {
                if (error.response) {
                    console.log(error.response.data);
                    console.log(error.response.status);
                    console.log(error.response.headers);
                }
            });
    };

В этом фрагменте кода "instance" - это мой экземпляр axios, к которому я применил тайм-аут 1000 (просто хотел посмотреть, будет ли это иметь значение). Я применил к запросу перехватчик axios, чтобы попытаться более четко понять, что происходит, но поведение идентично рабочим и нерабочим запросам. Это означает, что «запрос был отправлен» последовательно регистрируется, что означает, что запрос отправлен, и зарегистрированный конфигурационный файл выглядит одинаково между рабочими и нерабочими запросами.

instance.interceptors.request.use(function (config) {
    console.log("request was sent");
    console.log(config);
    return config;
  }, function (error) {
    console.log(error);
    return Promise.reject(error);
  });

Как выглядит конфигурация:

{url: "http://localhost:4000/inputs/add/", method: "post", data: {…}, headers: {…}, transformRequest: Array(1), …}
adapter: ƒ xhrAdapter(config)
data: {input_text: "l"}
headers: {common: {…}, delete: {…}, get: {…}, head: {…}, post: {…}, …}
maxContentLength: -1
method: "post"
timeout: 1000
transformRequest: [ƒ]
transformResponse: [ƒ]
url: "http://localhost:4000/inputs/add/"
validateStatus: ƒ validateStatus(status)
xsrfCookieName: "XSRF-TOKEN"
xsrfHeaderName: "X-XSRF-TOKEN"
__proto__: Object

Я вполне уверен, что в нерабочих случаях запрос даже не достигает бэкэнда. Это связано с тем, что в приведенном ниже фрагменте кода моего внутреннего маршрута нерабочие экземпляры ничего не регистрируют, в то время как рабочие экземпляры регистрируют как «это сработало», так и «закончено».

inputRoutes.route('/add').post(function(req, res) {
    req.body.input_output = processor.processText(req.body.input_text);
    let input = new Input(req.body);
    input.save()
        .then(todo => {
            res.status(200).json({'input': 'input added successfully'});
            console.log("this worked");
        })
        .catch(err => {
            res.status(400).send('adding new input failed');
            console.log("this didn't work");
        });
        console.log("finished");
});

Как ни странно, запрос POST фактически начал работать чаще, когда я помещал перехватчик в ... К вашему сведению, этот запрос работает на Почтальоне 100% времени. Кажется, что ни одна из реализованных мною ловушек ошибок также не обнаружена, и ничего не регистрируется.

Я был бы очень признателен, если бы у кого-нибудь были какие-либо предложения относительно дальнейших методов отладки или кто-нибудь знает решение дляЭта проблема. Я поместил отладочные / console.log заявления везде безрезультатно, и у меня нет идей. Спасибо!

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