Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import Promise from 'bluebird';
- import server from 'express';
- import cookie from 'cookie';
- import cookieParser from 'cookie-parser';
- import bodyParser from 'body-parser';
- import morgan from 'morgan';
- import helmet from 'helmet';
- import cors from 'cors';
- import userAgent from 'express-useragent';
- import mongoose from 'mongoose';
- import redis from 'redis';
- import config from './config';
- import Routes from './src/routes'; // импортируем все пути нашего API
- import { checkClientParams } from './src/middlewares'; // промежуточная валидация клиента, будет разобрана более подробно
- const app = server();
- try {
- const isProduction = (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'development');
- const port = process.env.NODE_ENV === 'production' ? config.prodPort : config.devPort;
- const mongoUserLogin = config.mongo.mongoUserLogin;
- const mongoUserPassword = config.mongo.mongoUserPassword;
- const mongoConnectionString = config.mongo.mongoConnectionString;
- const mongooseOptions = {
- auth: {
- user: mongoUserLogin,
- password: mongoUserPassword,
- },
- useNewUrlParser: true,
- reconnectTries: 10,
- reconnectInterval: 500,
- };
- app.use(cookieParser());
- app.use(helmet());
- app.use(cors());
- app.use(helmet.noCache());
- app.use(bodyParser.urlencoded({ extended: false }));
- app.use(bodyParser.json());
- app.use(morgan(isProduction ? 'tiny' : 'dev'));
- app.use(userAgent.express());
- const redisClient = redis.createClient(); // создаем подключение к redis
- app.use(checkClientParams); // при каждом запросе проверяем параметры клиента
- app.use((req, res, next) => {
- res.header("Content-Type", "application/json; charset=utf-8");
- res.header("Access-Control-Allow-Origin", config.originHost);
- res.header("Access-Control-Allow-Credentials", "true");
- res.header("Access-Control-Allow-Headers",
- "Origin, X-Requested-With, Content-Type," +
- "user-agent, Accept, accept-encoding, " +
- "accept-language, cookie, cache-control, " +
- "if-none-match, if-modified-since, x-proxy-api-host, " +
- "x-forwarded-for, x-access-token, x-session-token"
- );
- next();
- });
- app.use(function(req, res, next) {
- req.redisClient = redisClient; // вместо импортирования в модули объявляем в контекст express redis-клиент
- next();
- });
- redisClient.on("error", function (err) {
- console.log("Error " + err);
- });
- Routes(app);
- mongoose.connect(mongoConnectionString, mongooseOptions)
- .then(
- () => {
- console.log('Mongo is connected');
- app.listen(port, (err) => {
- if(!err) {
- console.log(`Run server on ${port} port`);
- }
- });
- },
- )
- .catch(
- (error) => {
- console.log(error); // тут обрабатываем ошибки подключения к базе
- }
- );
- } catch (error) {
- console.log(error);
- }
- module.exports = app;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement