Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.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
Node.js 随机';Econaborted';在Express/Node中使用sendFile时出错_Node.js_Multithreading_Express - Fatal编程技术网

Node.js 随机';Econaborted';在Express/Node中使用sendFile时出错

Node.js 随机';Econaborted';在Express/Node中使用sendFile时出错,node.js,multithreading,express,Node.js,Multithreading,Express,我用Express中间件设置了一个节点服务器。加载HTML文件时,我会在一些文件上随机出现EconAborted错误,这会触发大约10次其他加载(js、css等)。确切的错误是: { [Error: Request aborted] code: 'ECONNABORTED' } 由此简化代码生成(在我尝试调试该问题后): 许多帖子讨论了由于未指定完整路径名而导致的此错误。这里的情况并非如此。我确实指定了完整的路径,实际上错误是随机生成的。有时页面及其所有后续链接都能完美加载,有时则不然。我试

我用Express中间件设置了一个节点服务器。加载HTML文件时,我会在一些文件上随机出现EconAborted错误,这会触发大约10次其他加载(js、css等)。确切的错误是:

 { [Error: Request aborted] code: 'ECONNABORTED' }
由此简化代码生成(在我尝试调试该问题后):

许多帖子讨论了由于未指定完整路径名而导致的此错误。这里的情况并非如此。我确实指定了完整的路径,实际上错误是随机生成的。有时页面及其所有后续链接都能完美加载,有时则不然。我试图刷新缓存,但没有找到任何模式将其与此连接

此特定错误似乎是套接字连接中止的通用术语,并在FTP等其他应用程序的上下文中讨论

意识到可以增加节点工作线程后,我尝试使用:

process.env.UV_THREADPOOL_SIZE = 20;
然而,我的理解是,即使没有这一点,文件传输最多也可能必须等待工作线程空闲,而不是中止。我这里不是说大文件,所有文件都小于1MB

我有一种直觉,这与node没有直接关系

请指出处理此错误的任何其他可能性(节点或其他)。还有,还有其他的间接解决方案吗?重试几次可能是其中之一,但那将是笨拙的。编辑:否,我无法重试。标题已发送,但有错误

旁注: 许多使用sendFile的示例都跳过了使用回调,从而给人一种同步调用的印象。事实并非如此。请始终使用回调,检查是否成功,然后再转到“下一个”中间件,或者在发送由于任何原因失败时采取适当的步骤。不这样做会使在异步环境中调试结果变得困难。

请参阅 在某些情况下,在对
res.sendFile
的异步调用结束之前,是否可以通过调用
res.end
来终止连接


如果不是这样,你能粘贴更多的应用程序代码吗?

卸载并重新安装MongoDB为我解决了这个问题


我也面临同样的问题。当我不得不重新启动我的笔记本电脑,因为它变得没有反应时,这种情况就开始发生了。重新启动时,尝试使用nodejs连接到mongo服务器时,在使用
res.sendFile
时总是抛出Econaborted错误

,即使
res.statusCode
200
,我也看到了一些
Econaborted。我目前还没有找到解决这个问题的办法。这对我很有效
res.end
res.download
之前被调用+1.
process.env.UV_THREADPOOL_SIZE = 20;