ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #1.2 전문가처럼 서버 설정
    인스타그램 클론 코딩/#1 설정 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에 작성)

    '인스타그램 클론 코딩 > #1 설정' 카테고리의 다른 글

    # 1.1 GraphQL 서버 생성  (0) 2019.12.15
    #1.0 프로젝트 설정  (0) 2019.12.15

    댓글

Designed by Tistory.