Javascript Axios POST请求有时仅起作用(MERN应用程序)

Javascript Axios POST请求有时仅起作用(MERN应用程序),javascript,node.js,reactjs,mongodb,axios,Javascript,Node.js,Reactjs,Mongodb,Axios,我的axios POST请求在70%的时间内有效。似乎没有一种模式在输入有效和无效之间(长度似乎无关紧要)。我试着阅读了所有有类似问题的stackoverflow问题,但没有任何效果 onSubmit() { const newInput = { input_text: this.state.value, } instance.post('http://localhost:4000/inputs/add/', newInput) .then

我的axios POST请求在70%的时间内有效。似乎没有一种模式在输入有效和无效之间(长度似乎无关紧要)。我试着阅读了所有有类似问题的stackoverflow问题,但没有任何效果

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
我相当肯定,在非工作实例中,请求甚至不会到达后端。这是因为在我的后端路由的下面的代码片段中,非工作实例不记录任何内容,而工作实例同时记录“This worked”和“finished”

奇怪的是,一旦我把拦截器放进去,POST请求实际上开始更频繁地工作。。。仅供参考,该请求在邮递员身上100%有效。我实现的错误捕获似乎没有一个被命中,也没有任何记录


如果有人对进一步调试方法有任何建议,或者有人知道此问题的解决方案,我将不胜感激。我把debuggers/console.log语句放得到处都是,没有结果,我也没有主意。谢谢

用try/catch将express route函数的前两行换行。如果在那里出错,路由将永远不会返回响应,并且在请求超时之前,您不会看到控制台中的输出。这将是我的guessconsole.log(“started”),位于路由内的第一行,用于检查所有请求是否命中。我尝试了您的建议,但没有任何帮助:(将express route函数的前两行包装在try/catch中。如果在那里出错,则路由将永远不会返回响应,并且在请求超时之前,您不会在控制台中看到输出。这将是my guessconsole.log(“已启动”)在路由的第一行中,检查所有请求是否命中。我尝试了您的建议,但没有任何帮助:(
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");
});