module.exports = function (app) {
    var rootPath = process.cwd();
    app.set('views', rootPath + '/server/views');
    app.set('view engine', 'jade');
    if (process.env.NODE_ENV === "development") {
        app.use(webpackAssets('./build/webpack-assets.json', { devMode: true }));
        var webpack = require('webpack');
        var webpackConfig = require("./webpack")("development");
        var compiler = webpack(webpackConfig);
        app.use(require("webpack-dev-middleware")(compiler, {
            publicPath: '/build/',
            stats: { colors: true }
        }));
        app.use(morgan("dev"));
    } else {
        app.use(webpackAssets('./build/webpack-assets.json', { devMode: false }));
    }
    
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(bodyParser.json());
    app.use(methodOverride("_method"));
    
    app.use('/build/', express.static(rootPath + '/build/'));
    app.use('/vendor/', express.static(rootPath + '/client/vendor'));
    app.use('/polymer/', express.static(rootPath + '/client/app/polymerElements'));
  
    app.use((err, req, res, next) => {
        var code = 500,
            msg = { message: "Internal Server Error" };
        switch (err.name) {
            case "UnauthorizedError":
                code = err.status;
                msg = undefined;
                break;
            case "BadRequestError":
            case "UnauthorizedAccessError":
            case "NotFoundError":
                code = err.status;
                msg = err.inner;
                break;
            default:
                break;
        }
        return res.status(code).json(msg);
    });
};
Пример #2
0
const app = express();

// View templates
app.set('view engine', 'handlebars');
app.engine('handlebars', handlebars({
  defaultLayout: 'master',
  layoutsDir: path.resolve(__dirname, 'views/layouts')
}));
app.set('views', path.resolve(__dirname, 'views'));


app.use(bodyParser.json());
app.use(favicon(path.join(__dirname, '..', 'favicon.ico')));
app.use('/build', express.static(path.resolve(__dirname, 'build')));
app.use(webpackAssets('./webpack-assets.json', {
    devMode: isDev
}));

const server = require('http').Server(app);

// === Bid plcaing mock
const io = require('socket.io').listen(server);
const emitBidUpdate = eventsService.liveUpdates(io);

// Placing new bid should be confirmed by server.
// As I didn’t use any real database I skipped these checks with mock
// and decided to notify clients about new bid immediately.
var catchBitPlacing = function(req, res, next) {
  const { bid, bidder } = req.body;
  emitBidUpdate({
    auctionId: req.params.id,