Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免在Node.js/Express server中中止需要很长时间的http请求_Javascript_Node.js_Express - Fatal编程技术网

Javascript 避免在Node.js/Express server中中止需要很长时间的http请求

Javascript 避免在Node.js/Express server中中止需要很长时间的http请求,javascript,node.js,express,Javascript,Node.js,Express,我在React/Nodejs应用程序中遇到http请求问题。当我尝试执行一个在向客户端发送响应之前需要很长时间(如4分钟或更长时间)的请求时,请求被中止。是否有任何超时请求或我没有考虑的事情? 这是我的POST请求的响应:加载资源失败:net::ERR\u EMPTY\u response 是否需要使用AbortController处理某些问题?编辑:查看我的答案标题以集中问题。 我在我的Express.js中找到了一个使用setTimeout()的解决方案。问题是由于默认的快速超时导致服务器中

我在React/Nodejs应用程序中遇到http请求问题。当我尝试执行一个在向客户端发送响应之前需要很长时间(如4分钟或更长时间)的请求时,请求被中止。是否有任何超时请求或我没有考虑的事情? 这是我的POST请求的响应:
加载资源失败:net::ERR\u EMPTY\u response


是否需要使用AbortController处理某些问题?

编辑:查看我的答案标题以集中问题。 我在我的Express.js中找到了一个使用
setTimeout()
的解决方案。问题是由于默认的快速超时导致服务器中止

我在服务器中添加了这段代码来解决它。希望这对某人有用:

const timeOut = 1000 * 60 * 10;
app.use((req, res, next) => {
    req.setTimeout(timeOut, () => {
        const error = new Error('Request Timeout.');
        err.status = 408;
        next(error);
    });
    res.setTimeout(timeOut, () => {
        const error = new Error('Request has expired.');
        err.status = 503;
        next(error);
    })
    next();
});

编辑:查看我的答案标题以集中问题。 我在我的Express.js中找到了一个使用
setTimeout()
的解决方案。问题是由于默认的快速超时导致服务器中止

我在服务器中添加了这段代码来解决它。希望这对某人有用:

const timeOut = 1000 * 60 * 10;
app.use((req, res, next) => {
    req.setTimeout(timeOut, () => {
        const error = new Error('Request Timeout.');
        err.status = 408;
        next(error);
    });
    res.setTimeout(timeOut, () => {
        const error = new Error('Request has expired.');
        err.status = 503;
        next(error);
    })
    next();
});

我猜您的服务器正在终止http请求,而不是客户端。当发送http请求时,我会在服务器中启动一个批处理过程,就像在try-catch块
wait-spawn(os_shell,['/c',runFile],{stdio:'inherit'})中那样我正在节点中使用等待繁殖模块。express或您正在运行的任何程序的超时时间是多少?是的,我正在使用express。如何检查或设置超时?我猜您的服务器正在终止http请求,而不是客户端。当发送http请求时,我在服务器中启动一个批处理过程,就像在try-catch块
Wait-spawn(os_shell,['/c',runFile],{stdio:'inherit'})中那样我正在节点中使用等待繁殖模块。express或您正在运行的任何程序的超时时间是多少?是的,我正在使用express。如何检查或设置超时?