2016-10-22 2 views
3
나는 잠시 대부분의 오류 메시지를 flowjs를 사용하고있다

은 매우 분명하다 flowjs에서 "라이브러리 정의의 일관성 사용"하지만 지금은있어 뭔가 :이상한 오류 메시지

src/framework/uitable/show.js:0 
inconsistent use of library definitions 
46: columns: Array<UiTableConfigColumnType> 
         ^^^^^^^^^^^^^^^^^^^^^^^ object type. This type is incompatible with. See lib: src/framework/uitable/uitable.js.flow:46 
52: type UiTableDataColsType = Array<string>; 
             ^^^^^^ string. See lib: src/framework/uitable/uitable.js.flow:52 

src/framework/uitable/show.js:0 
inconsistent use of library definitions 
52: type UiTableDataColsType = Array<string>; 
             ^^^^^^ string. This type is incompatible with. See lib: src/framework/uitable/uitable.js.flow:52 
46: columns: Array<UiTableConfigColumnType> 
         ^^^^^^^^^^^^^^^^^^^^^^^ object type. See lib: src/framework/uitable/uitable.js.flow:46 

하고 있습니다 무엇을 찾아야할지 전혀 모른다. 정의

종류는 괜찮을 것 같다, 그들은 내가 전에이 오류를 본 적이 없다 0

줄을 서로 소스 점과 관련이없는 나는 아래로 추적에 어떤 도움을 기대하지 않는다 이 오류의 실제 소스

나는 inconsistent use of library definitions은 무엇을 의미 하는가 단지 오류 자체가 무엇을 의미하는지 이해하는데 도움을 필요로하는 이유 라인 0

답변

10

에서 오류 src/framework/uitable/show.js:0를보고 flowjs?

A 유형이 B으로 바뀌면 대부분의 플로 오류가 발생합니다. 예를 들어, 유형이 B 인 매개 변수를 필요로하지만, A 유형의 매개 변수를 전달하는 함수를 호출하는 경우 이 경우 Flow는 A 유형이 B 유형과 호환되지 않는 오류를 출력합니다.

때때로,이 경우

// in file foo.js 
libraryCallB(libraryCallA()); 

과 같은 코드를 가지고, 어쩌면 libraryCallA()의 반환 형식은 libraryCallB()의 매개 변수 유형과 일치하지 않습니다. 따라서 Flow는 유형이 호환되지 않는다는 오류를 내 보냅니다. 그러나 두 라이브러리 호출이 라이브러리 (예 : lib.js)에 정의되어 있기 때문에 오류 메시지에 foo.js이 전혀 표시되지 않습니다. 버그가있을 가능성이 있기 때문에 이것은 이상하지 않습니다. foo.js:0

따라서 bandaid로는 힌트로 오류 상단에 foo.js:0을 붙입니다. 호환되지 않는 라이브러리 유형으로 유입되는 라이브러리 유형이 하나 발견 된 경우 foo.js을 유형을 확인했습니다.

우리는 오류 메시지를 개선하려고 시도 했으므로 이러한 오류는 덜 널리 퍼져 있어야합니다. 그러나 그들은 여전히 ​​일어난다.

코드는 어떻게됩니까?

  • 오류 그것은 정상적인 flow check를 실행 flow check --traces 10을 시도 src/framework/uitable/show.js
  • 어딘가에 가능성이 있지만, 흐름의 내부 유형 검사 로직 스택 추적과 같은 종류의 이들 "흔적"을 저장합니다. 10은 최대 10까지의 인쇄 흔적을 의미합니다. Flow의 내부에 익숙하지 않으면 출력물을 이해하기 어렵지만 오류를 유발하는 위치는 src/framework/uitable/show.js 일 것입니다.
  • 나는이 오류가 Array<string>Array<UiTableConfigColumnType>으로 사용되거나 그 반대의 경우와 관련이 있다고 생각합니다.
+0

도움 주셔서 대단히 감사합니다. 'flow check --trace 10 '을 사용하여 실제 문제를 해결할 수 있었고 이것이 실제로 개선되어야 할 필요가 있다고 생각함에 따라이 오류를 재연하는 방법에 대한 예제를 작성했습니다. 별도의 문제 https://github.com/facebook/flow/issues/2673. – doberkofler

관련 문제