index.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 cors = require('cors')
  14. const express = require('express')
  15. const { resolvers } = require('./src/resolvers')
  16. const { db, populateUser } = require('./src/db')
  17. const { uploadMiddleware, handleFile } = require('./src/file')
  18. const { authenticate } = require('./src/authenticate')
  19. const server = new GraphQLServer({
  20. typeDefs: './schema.graphql',
  21. resolvers,
  22. context: req => ({
  23. ...req,
  24. db,
  25. debug: true
  26. })
  27. })
  28. server.express.use(cookieParser())
  29. server.express.use(cors({ origin: process.env.FRONTEND_URL }))
  30. server.express.use('/static', express.static('static'))
  31. server.express.post('/upload', uploadMiddleware.single('file'), handleFile)
  32. server.express.use(authenticate)
  33. server.express.use(populateUser)
  34. server.start(
  35. {
  36. cors: {
  37. credentials: true,
  38. origin: process.env.FRONTEND_URL
  39. }
  40. },
  41. server => console.log(`Server is running on http://localhost:${server.port}`)
  42. )