Created
October 17, 2018 16:31
-
-
Save shsunmoonlee/cd312a586e44a64bb32a71a4236ef1f7 to your computer and use it in GitHub Desktop.
How to Social Login(Facebook, Google, etc…) with Realtime MongoDB Database, Feathersjs(node.js backend framework), React(frontend framework)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* eslint consistent-return:0 */ | |
| // const express = require('express'); | |
| const logger = require('./logger'); | |
| const dotenv = require('dotenv'); | |
| const argv = require('./argv'); | |
| const port = require('./port'); | |
| const setup = require('./middlewares/frontendMiddleware'); | |
| const isDev = process.env.NODE_ENV !== 'production'; | |
| const ngrok = (isDev && process.env.ENABLE_TUNNEL) || argv.tunnel ? require('ngrok') : false; | |
| const resolve = require('path').resolve; | |
| const bodyParser = require('body-parser') | |
| const favicon = require('serve-favicon'); | |
| const compress = require('compression'); | |
| const cors = require('cors'); | |
| const helmet = require('helmet'); | |
| // const logger = require('winston'); | |
| const feathers = require('@feathersjs/feathers'); | |
| const configuration = require('@feathersjs/configuration'); | |
| const express = require('@feathersjs/express'); | |
| const socketio = require('@feathersjs/socketio'); | |
| const middleware = require('./middleware'); | |
| const services = require('./services'); | |
| const appHooks = require('./app.hooks'); | |
| const channels = require('./channels'); | |
| const authentication = require('./authentication'); | |
| const mongodb = require('./mongodb') | |
| const app = express(feathers()); | |
| // Load app configuration | |
| app.configure(configuration()); | |
| // Enable CORS, security, compression, favicon and body parsing | |
| app.use(cors()); | |
| app.use(helmet()); | |
| app.use(compress()); | |
| // Set up Plugins and providers | |
| app.configure(mongodb) | |
| app.configure(express.rest()); | |
| app.configure(socketio()); | |
| // Configure other middleware (see `middleware/index.js`) | |
| app.configure(middleware); | |
| app.configure(authentication); | |
| // Set up our services (see `services/index.js`) | |
| app.configure(services); | |
| // Set up event channels (see channels.js) | |
| app.configure(channels); | |
| // Configure a middleware for 404s and the error handler | |
| // app.use(express.notFound()); | |
| // app.use(express.errorHandler({ logger })); | |
| app.hooks(appHooks); | |
| var sslRedirect = require('heroku-ssl-redirect'); | |
| // heroku enable ssl redirect | |
| app.use(sslRedirect()); //heroku https | |
| // parse application/x-www-form-urlencoded | |
| app.use(bodyParser.urlencoded({ extended: false, limit: '50mb'})) | |
| // parse application/json | |
| app.use(bodyParser.json({limit: '50mb'})) | |
| dotenv.config(); | |
| // If you need a backend, e.g. an API, add your custom backend-specific middleware here | |
| // app.use('/api', myApi); | |
| // In production we need to pass these values in instead of relying on webpack | |
| setup(app, { | |
| outputPath: resolve(process.cwd(), 'build'), | |
| publicPath: '/', | |
| }); | |
| // get the intended host and port number, use localhost and port 3000 if not provided | |
| const customHost = argv.host || process.env.HOST; | |
| const host = customHost || null; // Let http.Server use its default IPv6/4 host | |
| const prettyHost = customHost || 'localhost'; | |
| // Start your app. | |
| const server = app.listen(port, host, (err) => { | |
| if (err) { | |
| return logger.error(err.message); | |
| } | |
| // Connect to ngrok in dev mode | |
| if (ngrok) { | |
| ngrok.connect(port, (innerErr, url) => { | |
| if (innerErr) { | |
| return logger.error(innerErr); | |
| } | |
| logger.appStarted(port, prettyHost, url); | |
| }); | |
| } else { | |
| logger.appStarted(port, prettyHost); | |
| } | |
| }); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment