인스타그램 클론 코딩/#1 설정

#1.2 전문가처럼 서버 설정

정중식 2019. 12. 15. 22:32
  • yarn add morgan
    • logger(로깅 전용 모듈)임

GraphQLServer 엔 express 서버가 내장되어있는데,아래와 같이 express 미들웨어를 설정해줄수있다. 

logger괄호안의 dev는 옵션임

require("dotenv").config();
import { GraphQLServer } from "graphql-yoga";
import logger from "morgan";

const server = new GraphQLServer({ typeDefs, resolvers });

server.express.use(logger("dev"));
  • src>api 폴더를 만든후 폴더 안에 schema.js파일 및 resolver.js (여기선 .js파일)파일을 만듦
    yarn add graphql-tools merge-graphql-schemas 등등 설치

  • sayHello.graphql
type Query {
  sayHello: String!
}
  • sayHello.js
export default {
  Query: {
    sayHello: () => "Hello"
  }
};

sayGoodbye 파일들도 똑같음

 

schema.js 의 중요성!!

src>schema.js

import path from "path";
import { makeExecutableSchema } from "graphql-tools";
import { fileLoader, mergeResolvers, mergeTypes } from "merge-graphql-schemas";

const allTypes = fileLoader(path.join(__dirname, "/api/**/*.graphql"));
const allResolvers = fileLoader(path.join(__dirname, "/api/**/*.js"));

const schema = makeExecutableSchema({
  typeDefs: mergeTypes(allTypes),
  resolvers: mergeResolvers(allResolvers)
});

export default schema;

// api 폴더의 모든 파일들을 schema 파일에서 한번에 받는것
// api 폴더밑에는 resolver나 graphql이 아닌 파일은 두면 안됨!

src>server.js

require("dotenv").config();
import { GraphQLServer } from "graphql-yoga";
import logger from "morgan";
import schema from "./schema";

const PORT = process.env.PORT || 4000;

const server = new GraphQLServer({ schema });

server.express.use(logger("dev"));

server.start({ port: PORT }, () =>
  console.log(`✅ Server running on port ${PORT}`)
);

 

!! prisma.yml를 git에 올리면 안됨(url이있기때문) (.gitignore에 작성)