0

단일 라이브러리 파일에서 클로저 컴파일러 (고급 레벨)로 컴파일 된 많은 js es6 모듈이 있습니다.Closure Compiler로 컴파일 된 모듈에서 심볼을 내보내는 방법은 무엇입니까?

/** @export */을 사용하여 일부 심볼을 ​​내보내거나 HTML 페이지의 컴파일되지 않은 자바 스크립트에 goog.exportSymbol('whatever', whatever)을 사용하지 못했습니다.

어떻게 만드시겠습니까?

Remarque : 나는 모든 모듈에 goog.require/goog.provide하여 ES6 import/export를 교체하는 경우, 작동 내가 성공적으로 HTML 페이지에이 기호를 사용할 수 있습니다.

답변

0

추가 조사가 끝난 후 해결책을 찾았습니다.

콘솔에 아무런 오류없이 브라우저에로드되었지만 (물론 undefined whatever 제외) 내 라이브러리가 실행되지 않았습니다. 필자는 단순히 클로저 라이브러리를 컴파일 할 파일 스택보다 먼저 이동 시켰고 내 라이브러리를 적절한 기호로 내보내 브라우저에서 올바르게 실행했습니다.

심볼을 내보내는 세 가지 방법은 컴파일 된 es6 모듈 (/** @export */ whatever, goog.exportSymbol('whatever', whatever), window['whatever'] = whatever)에서 작동합니다. 첫 번째 2는 세 번째로 편리한 방법입니다.

포트 자세한 내용은 No exported symbols with es6 modules library compiled by Closure Compiler를 참조

0

모듈에서는 @export을 사용할 수 없지만 goog.exportSymbol을 사용해야합니다. 다른 옵션은 수동으로 내보내는 것입니다.

window['whatever'] = whatever; 
+0

어느 쪽도'goog.exportSymbol'도'창이 [ '어떤이'] 나를 위해 whatever' 작업을 = 없습니다 : 나는 브라우저 콘솔에서'Object.keys (창)'넣을 때, 난독 화 된 기호 만 볼 수 있습니다 (같은 코드는 es6'import' /'export' 대신에 goog.require/goog.provide를 사용할 때 잘 보이지 않는 심볼을 생성합니다). –

+0

그건 다른 일이 벌어지고 있음을 의미합니다. 문제에 대한 최소한의 재현 사례를 게시해야합니다. –

관련 문제