Повторные ошибки приведут к тому, что Forever прекратит перезапуск приложения node.js
Я использую сервер node.js в качестве бэкенда для клиентского приложения Javascript, и мы используем Forever для запуска приложения node.js.
В клиентском коде обнаружена ошибка, которая указывает неверный путь при попытке открыть файл (из-за нечувствительности к регистру на нашем текущем сервере). Ошибка не обрабатывается должным образом, и это приводит к сбою node.js. Первые несколько раз, когда это происходит, Forever успешно перезапускает приложение, но после многократного вызова ошибки Forever не сможет восстановить приложение, и мы получаем ошибку 502 шлюза при попытке перейти на любую из страниц сервера.
Вот необработанная ошибка:
Error: ENOENT, no such file or directory 'public/projects/testHoc7/hocProject121/agents/agent1/index.agent'
at Object.fs.openSync (fs.js:432:18)
at Object.fs.writeFileSync (fs.js:971:15)
at Object.editAgentXML [as edit_agent_XML] (/srv/AgentCubesOnline/project.js:699:5)
at /srv/AgentCubesOnline/project.js:313:30
at /srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/collection/query.js:159:5
at Cursor.nextObject (/srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/cursor.js:742:5)
at commandHandler (/srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/cursor.js:716:14)
at /srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/db.js:1847:9
at Server.Base._callHandler (/srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/connection/base.js:445:41)
at /srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/connection/server.js:478:18
error: Forever detected script exited with code: 8
error: Script restart attempt #8
/srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/connection/base.js:245
throw message;
и вот сообщение журнала, которое мы получаем, когда Forever не может перезапустить приложение:
Error: ENOENT, no such file or directory 'public/projects/testHoc7/hocProject121/agents/agent1/index.agent'
at Object.fs.openSync (fs.js:432:18)
at Object.fs.writeFileSync (fs.js:971:15)
at Object.editAgentXML [as edit_agent_XML] (/srv/AgentCubesOnline/project.js:699:5)
at /srv/AgentCubesOnline/project.js:313:30
at /srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/collection/query.js:159:5
at Cursor.nextObject (/srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/cursor.js:742:5)
at commandHandler (/srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/cursor.js:716:14)
at /srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/db.js:1847:9
at Server.Base._callHandler (/srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/connection/base.js:445:41)
at /srv/AgentCubesOnline/node_modules/mongodb/lib/mongodb/connection/server.js:478:18
error: Forever detected script exited with code: 8
/usr/lib/node_modules/forever/node_modules/forever-monitor/node_modules/broadway/node_modules/eventemitter2/lib/eventemitter2.js:283
throw arguments[1]; // Unhandled 'error' event
^
Error: Cannot stop process that is not running.
at /usr/lib/node_modules/forever/node_modules/forever-monitor/lib/forever-monitor/monitor.js:332:26
at process._tickCallback (node.js:419:13)
Конечно, мы исправим ошибку и добавим правильную обработку ошибок, но в настоящее время я больше заинтересован в том, чтобы выяснить, как предотвратить ошибку Forever. Что может заставить Forever перестать возвращать node.js?