index.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. /**
  2. * Configure dotenv:
  3. * https://www.npmjs.com/package/dotenv
  4. *
  5. * Configure file updates with multer:
  6. * https://github.com/expressjs/multer
  7. *
  8. * Configure CORS for use with localhost.
  9. */
  10. require('dotenv').config()
  11. const { GraphQLServer } = require('graphql-yoga')
  12. const cookieParser = require('cookie-parser')
  13. const bodyParser = require('body-parser')
  14. const cors = require('cors')
  15. const express = require('express')
  16. const { resolvers } = require('./src/resolvers')
  17. const { db, populateUser } = require('./src/db')
  18. const { uploadMiddleware, handleFile } = require('./src/file')
  19. const { authenticate } = require('./src/authenticate')
  20. const server = new GraphQLServer({
  21. typeDefs: './schema.graphql',
  22. resolvers,
  23. context: req => ({
  24. ...req,
  25. db,
  26. debug: true
  27. })
  28. })
  29. server.express.use(cookieParser())
  30. server.express.use(bodyParser.json())
  31. server.express.use(cors({ origin: process.env.FRONTEND_URL }))
  32. server.express.use('/static', express.static('static'))
  33. server.express.post('/upload', uploadMiddleware.single('file'), handleFile)
  34. server.express.use(authenticate)
  35. server.express.use(populateUser)
  36. server.start(
  37. {
  38. cors: {
  39. credentials: true,
  40. origin: process.env.FRONTEND_URL
  41. }
  42. },
  43. server => console.log(`Server is running on http://localhost:${server.port}`)
  44. )