Transcrypt: using code from another python script causes 'TypeError: module is undefined'
Transcrypt: using code from another python script causes '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()
然后我运行
python -m transcrypt -n mymodule.py
python -m transcrypt -n myscript.py
其中 运行 没有错误,并在目录 __javascript__ 中生成 mymodule.js、mymodule.mod.js、myscript.js 和 myscript.mod.js。
当我在 Firefox 58 中打开 index.htm 并打开控制台时,它显示 'TypeError: module is undefined'。我尝试将 <script src="__javascript__/mymodule.js"></script>
添加到 HTML 但这没有帮助。我通读了 transcrypt 文档的 this part,但是当我键入 python -m transcrypt -h
.
时,-u
开关没有出现在可用命令列表中
单元(编译单元、组件)是一个相对较新的功能,与模块相反,从一开始就在 Transcrypt 中。 您需要 Transcrypt 3.6.101 才能使用单元。请注意,由于 CPython 是解释器而不是编译器,因此编译单元的概念在那里不起作用。
单元与模块结合使用见:
此示例应该可以帮助您入门,如果没有,请在评论或编辑中告诉我。
[编辑]
所有单元(相对于模块)都应单独编译,因此在示例中:
transcrypt -u .run animals.py
transcrypt -u .com cats.py
transcrypt -u .com dogs.py
因此模块包含带有 .run
选项的运行时和带有 .com
选项的其他组件。如果需要,可以添加 -n
开关。
在多个单元中使用的模块应添加到运行时单元,即使用 -u .run
开关编译的单元。
我在使用 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()
然后我运行
python -m transcrypt -n mymodule.py
python -m transcrypt -n myscript.py
其中 运行 没有错误,并在目录 __javascript__ 中生成 mymodule.js、mymodule.mod.js、myscript.js 和 myscript.mod.js。
当我在 Firefox 58 中打开 index.htm 并打开控制台时,它显示 'TypeError: module is undefined'。我尝试将 <script src="__javascript__/mymodule.js"></script>
添加到 HTML 但这没有帮助。我通读了 transcrypt 文档的 this part,但是当我键入 python -m transcrypt -h
.
-u
开关没有出现在可用命令列表中
单元(编译单元、组件)是一个相对较新的功能,与模块相反,从一开始就在 Transcrypt 中。 您需要 Transcrypt 3.6.101 才能使用单元。请注意,由于 CPython 是解释器而不是编译器,因此编译单元的概念在那里不起作用。
单元与模块结合使用见:
此示例应该可以帮助您入门,如果没有,请在评论或编辑中告诉我。
[编辑] 所有单元(相对于模块)都应单独编译,因此在示例中:
transcrypt -u .run animals.py
transcrypt -u .com cats.py
transcrypt -u .com dogs.py
因此模块包含带有 .run
选项的运行时和带有 .com
选项的其他组件。如果需要,可以添加 -n
开关。
在多个单元中使用的模块应添加到运行时单元,即使用 -u .run
开关编译的单元。