我正在构建一个电子商务网站,其中有一个身份验证系统。
我注意到,如果客户端使用错误的用户或密码登录,则使用的后端/服务器nodemon将崩溃并挂在那里崩溃,直到我手动重新启动nodemon。这是nodemon崩溃的示例输出错误:
[nodemon] 应用程序崩溃 - 启动前等待文件更改...
节点:内部/错误:464 ErrorCaptureStackTrace(错误);
^
错误 [ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头
当然,当服务器崩溃时,客户端无法再访问或再次登录,直到服务器重新启动。经过一番谷歌搜索后,我发现了这个问题和这个存储库可以解决我的问题,但特别是,并不像预期的那样准确,我不希望nodemon在发生任何错误时永远重新启动,但仅限于我设置的具体错误 - 例如身份验证错误正如我上面提到的-。
nodemon所以,我的想法/问题是:在某些失败或错误(并非全部)的情况下,是否有办法自行重新启动?
似乎您指的是生产情况,而 nodemon 是一个开发节点服务器,它不适合在生产中使用,如简介所述:
nodemon 是一个工具,可在检测到目录中的文件更改时自动重新启动节点应用程序,从而帮助开发基于 Node.js 的应用程序。
您应该在生产中使用node.js,而不是nodemon。
为了管理生产中的节点服务器,您可以使用PM2 等流程管理器。。
也就是说,每次用户使用错误密码时都会崩溃的身份验证服务器在处理常见用例时显得非常无效。因此,我建议首先修复根本原因,即有问题的服务器,然后使用 PM2.x 之类的工具从意外崩溃中恢复。
PS:您收到的错误看起来像是在发送响应(在本例中为错误响应)而不退出函数(例如通过使用 )时收到的明确错误return。因为您没有返回,所以res.send调用了另一个,这会导致“ERR_HTTP_HEADERS_SENT”错误。看这个答案。