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