Я пытаюсь получить мое приложение MEAN для производства. Приложение было построено на шаблоне Mean.js. По моему мнению, MEAN.js использует Forever.js для перезапуска приложения после ошибки (хотя документация по подготовке Mean.js для производства сильно отсутствует); однако представляется, что предлагаемый способ справиться с сбоем приложения - это использование доменов Node в сочетании с кластерами. Вот несколько ссылок:Использование доменов домена в Mean.js
- Это с веб-страницы узла на осуждается
uncaughtException
Событие:
Обратите внимание, что uncaughtException является очень грубый механизм для обработки исключений.
Не используйте его, вместо этого используйте домены.
- Node.js домены: https://nodejs.org/api/domain.html
- \ Http: //shapeshed.com/uncaught-exceptions-in-node/
- т.д.
Хотя я нашел много предложения по использованию доменов, я еще не нашел тот, который говорит мне, что нужно сделать для включения доменов в приложение, особенно тот, который уже был разработан.
Вопросы,
Что мне нужно сделать, чтобы интегрировать узел домены в приложение Mean.js? Из того, что я собрал (от Node.js доменов веб-страницы и here), вы бы в
server.js
в корне проекта Mean.js и сделать что-то похожее на это:var cluster = require('cluster'); var PORT = +process.env.PORT || 1337; if (cluster.isMaster) { //Fork the master as many times as required. cluster.fork(); cluster.fork(); cluster.on('disconnect', function(worker) { console.error('disconnect!'); cluster.fork(); }); } else { var domain = require('domain'); var d = domain.create(); d.on('error', function(er) { console.error('error', er.stack); try { // make sure we close down within 30 seconds var killtimer = setTimeout(function() { process.exit(1); }, 30000); // But don't keep the process open just for that! killtimer.unref(); // stop taking new requests. server.close(); // Let the master know we're dead. This will trigger a // 'disconnect' in the cluster master, and then it will fork // a new worker. cluster.worker.disconnect(); // try to send an error to the request that triggered the problem res.statusCode = 500; res.setHeader('content-type', 'text/plain'); res.end('Oops, there was a problem!\n'); } catch (er2) { // oh well, not much we can do at this point. console.error('Error sending 500!', er2.stack); } }); d.run(function() { //Place the current contents of server.js here. }); }
мне нужно сделать оберните все контроллеры бэкэнда в
domain.run()
?