2

Transcrypt for python を使用して Javascript をコンパイルするには、互いに必要な 2 つのモジュールがあります。例えば:

myTest.py:

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

および myTest2.py:

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

JavaScript にコンパイルして呼び出すmyTest.test()と、RangeError: Maximum call stack size exceeded が発生します。どうすればこれを回避できますが、相互に使用する 2 つのモジュールを保持できますか? 前もって感謝します。

4

2 に答える 2

4

Transcrypt では、生成された JavaScript にどのモジュールを含めるかをコンパイラが認識している必要があるため、インポートは実行時ではなくコンパイル時に解決されます。さらに、インポートの解決は 1 回のパスで行われます。解決が 1 回のパスで行われるという事実は、相互の (または一般的に循環的な) インポートがサポートされていないことを意味します。

したがって、お互いに何かを必要とする 2 つのモジュールがある場合、その何かを分解して 3 番目のモジュールに入れ、両方によってインポートする方法があります。

解決がコンパイル時に行われるという事実は、'if' を使用した実行時の条件付きインポートには意味がないことも意味します。条件付きインポートには、コンパイル時に作業を行う __pragma__ ('ifdef', ...) を使用します。

このような制限については、次の場所で説明されています。

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

于 2016-09-01T21:12:04.607 に答える
0

myTest必要に応じてインポートしてみてください。

mytest2.py

def test():
    from myTest import someConstant
    console.log(someConstant)
于 2016-09-01T08:30:21.943 に答える