Node.js - Apollo server에서 express 세팅 하기

김예지·2021년 12월 12일
0
  • 원인
    • https 설정은 천천히 하려고 했으나, Apollo Studio에서 제공하는 sandbox를 사용하려면 https 설정을 먼저 했어야 했음
  • 진행
    • Node.js의 https 설정을 letsencrypt를 사용하여 진행하려 했는데, 해당 라이브러리를 적용한 내역이 express의 public 폴더를 static으로 설정하여 호스팅 한 경우밖에 없었음
  • 결과
    • Apollo에서도 express를 Middleware로 사용하여 같이 동작시키는 라이브러리(apollo-server-express)가 있으며, 해당 라이브러리 적용 후 https 설정 완료

      const server = new ApolloServer({ typeDefs, resolvers });
      const app = express();
      
      const cors = require("cors");
      app.use(cors({ origin: true, credentials: true }));
      server.applyMiddleware({ app });
      app.use(express.static("public"));
      
      app.get("/", (req, res) => {
        res.send("Hello, This is letter.");
      });
      
      http
        .createServer(app)
        .listen(4000, () => console.log(`🚀 Server ready at http://localhost:4000`));
      
      if (env == "prd") {
        const options = {
          ca: fs.readFileSync(process.env.HTTPS_CA),
          key: fs.readFileSync(process.env.HTTPS_KEY),
          cert: fs.readFileSync(process.env.HTTPS_CERT),
        };
        https.createServer(options, app).listen(443);
      }
  • 여기에서도 문제가 있었는데, 기존 호스팅하던 url은 localhost:4000이였는데, express에서 static 폴더를 사용하며 루트 url을 가져가버림
  • endpoint가 자동으로 바뀌는 것으로, graphql을 사용하는 url은 https://기존url/graphql 로 바뀐 것을 확인
profile
새싹

0개의 댓글