使用Transcrypt for python进行javascript编译,我有两个模块,它们互相需要。例如:
myTest.py:
import myTest2
def test():
myTest2.test()
someConstant = 1
和myTest2.py:
import myTest
def test():
console.log(myTest.someConstant)
编译为javascript并调用myTest.test()
后,我得到一个RangeError:超出了最大调用堆栈大小。我怎样才能避免这种情况,同时保留两个互相使用的模块?提前谢谢。
发布于 2016-09-01 21:12:05
在代码转换中,导入是在编译时而不是运行时解析的,因为编译器必须知道要在生成的JavaScript中包含哪些模块。此外,导入解析在一次传递中发生。单次解析意味着不支持相互(或一般循环)导入。
因此,如果您有两个模块需要彼此的某些东西,那么方法是将这些东西提取出来,放入第三个模块中,由这两个模块导入。
在编译时进行解析的事实也意味着使用'if‘的运行时条件导入没有意义。对于条件导入,请使用__pragma__ ('ifdef',...)它的工作在编译时完成。
有关此类限制的说明,请参阅:
http://www.transcrypt.org/docs/html/special_facilities.html#transcrypt-s-module-mechanism
发布于 2016-09-01 08:30:22
在需要时尝试从myTest
导入。
在mytest2.py
中
def test():
from myTest import someConstant
console.log(someConstant)
https://stackoverflow.com/questions/39266262
复制