invalid_export_of_internal_element 진단: 내부 전용 요소를 공개 API로 내보낼 때
invalid_export_of_internal_element 진단: 내부 전용 요소를 공개 API로 내보낼 때
Dart 분석기가 내보내는 진단에는 이름이 있어요. invalid_export_of_internal_element는 공개 라이브러리가 @internal로 표시된 선언을 내보내려 할 때 분석기가 알려주는 컴파일 타임 진단이에요. 내부 전용으로 만든 멤버를 패키지의 공개 API 일부로 export하면 안 되니까요.
본문
설명
@internal 애너테이션으로 표시된 선언을 공개 라이브러리가 export할 때 분석기는 이 진단을 만들어요. 여기서 공개 라이브러리란 패키지의 lib 디렉터리에 있으면서 lib/src 디렉터리 안에는 없는 라이브러리를 말해요.
예시
src 디렉터리의 a.dart 파일에 다음 내용이 있다고 해 볼게요.
import 'package:meta/meta.dart';
@internal class One {}
공개 라이브러리에 있는 아래 코드는 내부에서만 쓰려고 한 이름을 export하고 있기 때문에 이 진단이 나와요.
export 'src/a.dart';
흔한 해결 방법
만약 export가 필요하다면, hide 절을 붙여서 내부 전용 이름을 가려요.
export 'src/a.dart' hide One;
export가 필요 없다면, 그냥 제거하면 돼요.