IT,프로그래밍/GraphQL

Nexus에서 auto generate(make schema)가 갑자기 안되던이유

Nexus에서 generate가 안되던이유

최근 하나의 서버를 실서버와 개발서버로 분리하는 작업을 진행하였다.

 

그후 오늘 Hasura에 remoteschema를 추가하기 위하여 Nexus를 이용해서 graphql코드를 generate하려고 했는데 전혀 변화가 없었다.

서버설정을 잘못했나 놀란마음에 찾아봐도 문제는 없었고,

 

코드나 커맨드 상에 문제는 없었는지 찾아 보았지만 역시나 staging환경을 체크하는 항목은 없었다.

공식 문서를 봐도 이렇다할 정보는 없었기에 꽤 오래 고생하였다.

 

https://nexusjs.org/docs/api/make-schema

 

 

하지만 알아냈는데 그것은 바로 환경변수 때문이었다.

 

이 현상이 일어난 시점이 dotenv를 사용하여서 .env파일에 NODE_ENV를 추가하면서 부터 안되었기에

shouldGenerateArtifacts 코드가 굉장히 의심스러웠다.

 

그래서 집중적으로 찾아본결과

https://github.com/graphql-nexus/schema/pull/47/files

 

위와 같이 환경변수가 없거나 혹은 development여야지 generate를 하는 default값이 소스에 있었다...

이런걸 왜 docs에 안써놓은건지 이해가가지 않지만...

import { makeSchema } from "@nexus/schema";

import * as allTypes from "@app/gql/schema";

const schema = makeSchema({
  nonNullDefaults: {
    output: true,
  },
  shouldGenerateArtifacts: process.env.NODE_ENV === "staging",
  types: allTypes,
  outputs: {
    schema: __dirname + "/generated/schema.graphql",
    typegen: __dirname + "/generated/typings.d.ts",
  },
});

export const options = {
  schema,
  path: "/private/gql",
};

위와 같이 staging일경우 auto-generate하라는 코드 한줄을 넣어서 버그를 수정하였다.

 

장담하건데 나와같은문제를 겪는 전세계의 수많은 동지들이 있을것 같다란 생각을 방금 했다..