Transcrypt:使用另一个 python 脚本中的代码会导致'TypeError: module is undefined'



我使用TransCrypt(版本3.6.95(跨多个文件划分代码遇到了困难。作为基本示例,我在同一目录中有以下文件:

index.htm

<html>
  <head>
    <meta charset="utf-8">
    <title>Transcrypt test</title>
</head>
<body>
  <div id="box"></div>
  <button onclick="myscript.set_box_content()">Set box content</button>
</body>
<script src="__javascript__/myscript.js"></script>    
</html>

mymodule.py

def helloworld():
    return "Hello world!"

myScript.py

from mymodule import helloworld
def set_box_content():
    document.getElementById("box").innerHTML = helloworld()

i然后运行

python -m transcrypt -n mymodule.py
python -m transcrypt -n myscript.py

无错误运行并生成myModule.js,mymodule.mod.js,myScript.js和myScript.mod.js,目录中

当我在Firefox 58中打开index.htm并打开控制台时,它说" typeError:模块不确定"。我尝试将<script src="__javascript__/mymodule.js"></script>添加到HTML中,但这无济于事。我阅读了TransCrypt文档的这一部分,但是当我键入python -m transcrypt -h时,-u交换机不会出现在可用命令列表中。

单元(汇编单元,组件(是一个相对较新的功能,而不是模块,从一开始就已经超越了。您需要发送3.6.101才能使用单位。请注意,由于Cpython是解释器而不是编译器,因此编译单元的概念在那里不起作用。

在:

中显示了与模块结合使用的单位。

https://transcrypt.org/docs/html/special_facilities.html#transcrypt-s-nit-mechanism-and-mechanism-and-creating-native-native-native-javascript-javascript-component-frame-frame-frame-frame-frame-frame-frame

此示例应该让您入门,如果不是,请在评论或编辑中告诉我。

[编辑]所有单位(与模块相反(均应分别编译,因此在此示例中:

transcrypt -u .run animals.py
transcrypt -u .com cats.py
transcrypt -u .com dogs.py

因此,包含具有.run选项的运行时的模块以及带有.com选项的其他组件。如果需要,可以添加-n开关。

在多个单元中使用的模块应添加到运行时单元,即用-u .run开关编译的单元。

相关内容

  • 没有找到相关文章

最新更新