Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
var connectDomain = require('connect-domain');
...
var app = express();
...
// Подключаем middleware
app.use(connectDomain());
// Обработка исключений.
app.use(function(err, req, res, next) {
logger.error(err);
res.send(500, 'Houston, we have a problem!\n');
});
root@server:/usr/local/server# cat ./server.js
#!/usr/bin/node
process.on('uncaughtException', function (err)
console.log(err);
});
...
root@server:/usr/local/server# chmod +x /usr/local/server/server.js
# например под upstart:
root@server:/usr/local/server# cat /etc/init/server.conf
description "My super server"
start on runlevel [2345]
stop on runlevel [016]
respawn
exec NODE_ENV="production" /usr/local/server/server.js 2>&1 >> /var/log/server/server.log
# for production:
root@server:/usr/local/server# service server start
root@server:/usr/local/server# tail -f /var/log/server/server.log
# for development:
root@server:/usr/local/server# ./server.js
var ok = require('okay');
app.use(require('express-domain-middleware'));
app.use(app.router);
app.use(function errorHandler(err, req, res, next) {
console.log('error on request %d %s %s: %j', process.domain.id, req.method, req.url, err);
res.send(500, "Something bad happened. :(");
});
app.get('/error', function(req, res, next) {
db.query('SELECT happiness()', ok(next, function(rows) {
fs.readFile('asldkfjasdf', ok(next, function(contents) {
process.nextTick(ok(next, function() {
throw new Error("The individual request will be passed to the express error handler, and your application will keep running.");
}));
}));
}));
});
try {
var res = yield asyncCall();
} catch (e) {
logger.log(e);
}
Пуленепробиваемый Node.js