인스타그램 클론 코딩/#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에 작성)