require('dotenv').config({ path: '.env' }); const express = require('express'); const formidable = require('formidable'); const routes = require('./routes/routes'); const MorganMiddleware = require('./middleware/MorganMiddleware'); const app = express(); app.use(MorganMiddleware); app.use(express.json({ limit: '10mb' })); // parsing application/json app.use(express.urlencoded({ extended: true })); // parsing application/x-www-form-urlencoded // parsing form-data app.use(async function (req, res, next) { try { let isMultipart = req.headers['content-type'].includes('multipart/form-data', 0); if (isMultipart) { let form = new formidable.IncomingForm(); let parseFormData = async function () { return new Promise((resolve, reject) => { form.parse(req, function (err, fields, files) { if (err) { reject(err); return; } req.body = fields; resolve(true); }) }) } await parseFormData(); } } catch (e) { } next(); }); app.use(async function (req, res, next) { // set control allowed headers res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'OPTIONS,GET,HEAD,PUT,PATCH,POST,DELETE'); res.header('Access-Control-Allow-Headers', 'Accept, Authorization, Content-Type, X-Requested-With, Range, x-api-key, x-forwarded-for'); next(); }); // api routes.use(app); app.listen(process.env.PORT, () => { console.log('Service running at port ' + process.env.PORT); });