You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Transcrypt调用其他Python脚本时出现'TypeError: module is undefined'

解决Transcrypt多文件编译后Firefox中出现TypeError: module is undefined的问题

我来帮你排查这个Transcrypt多文件模块加载的问题,我之前也碰到过类似的情况,咱们一步步来解决:

  • 首先检查HTML脚本的路径与加载顺序
    你提到尝试添加<script>标签但没成功,首先要注意几个关键点:

    1. 要加载的是.mod.js后缀的文件——这是Transcrypt生成的模块依赖管理文件,而非普通的.js文件;
    2. 路径拼写要准确!你写的__javascrip...少了一个t,正确路径应该是__javascript__;
    3. 加载顺序必须是先加载依赖模块,再加载主脚本。比如你的场景里,应该先加载mymodule.mod.js,再加载myscript.mod.js。

    正确的HTML脚本引用示例:

    <script src="__javascript__/mymodule.mod.js"></script>
    <script src="__javascript__/myscript.mod.js"></script>
    
  • 确认Python代码中的导入逻辑正确
    在myscript.py中导入mymodule时,使用标准的Python导入语句即可,不要添加相对路径或特殊语法:

    import mymodule
    

    Transcrypt会自动将这种导入转换为对应的JS模块依赖,确保模块间的引用关系正确。

  • 适配Firefox 58的兼容性限制
    Firefox 58对模块加载的支持存在一些局限性,你可以尝试两个优化:

    1. 给脚本标签添加defer属性,确保脚本在DOM加载完成后再执行,避免因加载时机问题导致的模块未定义:
      <script src="__javascript__/mymodule.mod.js" defer></script>
      <script src="__javascript__/myscript.mod.js" defer></script>
      
    2. 避免直接用file://协议打开本地HTML文件,Firefox对本地文件的模块加载有安全限制。可以启动一个简单的本地服务器,比如用Python命令:
      python -m http.server
      
      然后通过http://localhost:8000/index.htm访问页面。
  • 重新确认Transcrypt编译命令
    确保你编译的是主脚本文件(即依赖其他模块的myscript.py),Transcrypt会自动处理依赖模块的编译。执行编译命令时可以加上-b参数确保重新构建:

    transcrypt -b myscript.py
    

按照上面的步骤逐一排查,应该就能解决Firefox中module is undefined的错误了。

内容的提问来源于stack exchange,提问作者Dominic Price

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:23:51