2016-09-01 3 views
2

파이썬에서 자바 스크립트로의 변환을 위해 Transcrypt를 사용하여 나는 서로를 필요로하는 2 개의 모듈을 가지고 있습니다.가져 오기에서 transcrypt 가져 오기

myTest.py :

import myTest2 
def test(): 
    myTest2.test() 
someConstant = 1 

및 myTest2.py 예를 들어

import myTest 
def test(): 
    console.log(myTest.someConstant) 

자바 스크립트로 컴파일하고, myTest.test()를 호출 한 후 나는 오류 RangeError를 얻을 : 최대 호출 스택의 크기를 초과했습니다. 어떻게 이것을 피할 수 있습니까?하지만 서로를 사용하는 2 개의 모듈을 유지하고 있습니까? 미리 감사드립니다.

답변

4

에서

이 아니라 런타임에 비해 컴파일 시간에 해결됩니다. 또한 가져 오기 확인은 한 번에 수행됩니다. 단일 통과에서 해결이 발생한다는 사실은 상호 (또는 주기적으로) 가져 오기가 지원되지 않는다는 것을 의미합니다.

그래서 서로가 필요한 두 개의 모듈이 있다면, 그 방법을 알아 내고 그 모듈을 제 3의 모듈에 넣고 둘 다 가져옵니다.

컴파일 타임에 해상도가 발생한다는 사실은 'if'를 사용하여 런타임 조건부 가져 오기에 아무런 포인트가 없다는 것을 의미합니다. 조건부 가져 오기의 경우 작업 컴파일 시간을 수행하는 __pragma__ ('ifdef', ...)를 사용하십시오. 답변에 대한

http://www.transcrypt.org/docs/html/special_facilities.html#transcrypt-s-module-mechanism

+0

감사 :이 같은

제한에 설명되어 있습니다. 그리고 Transcrypt를 그대로 만들어 주셔서 감사합니다. 난 정말 좋아. –

0

myTest에서 필요할 때마다 가져 오기를 시도하십시오. 컴파일러가 생성 된 자바 스크립트에 포함 할 어떤 모듈을 알고 있어야하기 때문에 번역하기 수입에서 mytest2.py

def test(): 
    from myTest import someConstant 
    console.log(someConstant)