2016-06-16 2 views
2

작동하지 않음 그 포장을 말할 일부 게시물 순환 GraphQL 스키마이 같은이

Error: Schema must contain unique named types but contains multiple types named "Driver".

내가 발견

//terminalType.js 
module.exports = new GraphQLObjectType({ 
    name: 'Terminal', 
    fields:() => ({ 
    drivers: { 
     type: new GraphQLList(DriverType), 
     resolve: resolver(Terminal.Drivers) 
    } 
    }) 
}); 

나는 오류 함수 블록의 필드가이를 해결하지만, 당신이 볼 수 있듯이, 나는 그것을했고, 차이를 만들지 않았다.

가늘고 긴 순환 참조를 지원해야합니까? 고객이 원하는 깊이를 지정할 수있게 할 수 있습니다.

내가 뭘 잘못하고 있니?

해결 방법으로 DriverType에서 homeTerminal을 제거하고 기본 필드를 사용하여 플랫화할 수 있지만 이는 다소 우아합니다.

+0

이것은주기와 관련이 없지만 나머지 스키마 코드가 없으면 문제가 무엇인지 알 수 없습니다. 어떻게 든 드라이버 유형을 두 번 추가하거나 유형 정의를 복사하여 붙여 넣은 것처럼 보이지만 어딘가에서 '이름'을 변경하는 것을 잊어 버렸습니다. – helfer

+0

'''TerminalType'''에서'''drivers''를 제거하면 오류가 사라집니다. '''DriverType''에서'''''HomeTerminal'''을 제거하면 사라지지 않습니다. 나는 그것이 단서라고 생각한다. –

+0

"Driver"라는 이름을 가진'''GraphQLObjectType''만이 있습니다. –

답변

0

문제점을 발견했습니다. terminalType.js에서 나는했다 :

import DriverType from './DriverType';

은 다음과 같아야합니다

import DriverType from './driverType';

소문자 "D"올바른된다.

UPDATE

여기에 무슨 일이 일어나고 있는지 나는 생각합니다. Nodejs는 가져 오기를 캐시합니다. 따라서 동일한 파일을 여러 번 가져 오면 항상 동일한 인스턴스가 반환됩니다. 그러나, 내가 믿는 동안 import이 아니며은 대소 문자를 구분하는 캐싱 입니다. 따라서 파일 이름에 대소 문자를 달리하여 호출하면 새롭고 다른 인스턴스가 반환됩니다.

+0

당신은 답안의 당신의 해답이 어떻게 그 문제의 문제/오류와 관련이 있는지 또는 그 문제를 해결 하는지를 설명하지 않았습니다. 정교하게 만들어 주시겠습니까? –

+0

@Ahmad Ferdous - 응답의 업데이트를 참조하십시오. –

+1

@TimScott : 노드에서 수정해야하는 버그처럼 들립니다. – helfer