回答
Hamibot 的多文件模板语法与单文件在 JavaScript 语法层面没有区别,但需要注意以下两点:
-
模块加载机制
多文件之间通过require()
进行模块引用(如require('circle.js')
),每个文件默认独立作用域,需通过module.exports
导出接口。与单文件相比,多文件需要确保模块间的依赖关系正确,路径引用无误。 -
打包运行问题
- 在线编辑器暂不支持多文件直接运行,必须将所有文件 打包为一个单独的 JS 文件 后上传执行
- 打包时需保证:
✅ 所有require()
路径正确解析
✅ 模块导出/引入逻辑无冲突
✅ 无语法错误或未处理的全局变量
若打包后运行不生效,请检查:
- 是否遗漏了关键模块的代码合并
- 是否存在循环依赖或未定义的
require
路径 - 控制台是否有报错信息(如
module not found
)
补充回答 1
根据 Hamibot 的运行环境限制,使用 npm run build
打包后可能因以下原因导致脚本未生效:
1. JavaScript 兼容性问题
- Hamibot 使用的 JavaScript 引擎是 Rhino 1.7.15,对现代 JS 特性(如
let/const
、箭头函数、模块化语法等)支持有限。 - 解决方案:
- 确保打包后的代码降级为 ES5 标准(移除
let
/const
、箭头函数等)。 - 在脚本开头添加注释声明文档地址(即使不使用该功能):
// 文档地址 https://docs.hamibot.com/
- 确保打包后的代码降级为 ES5 标准(移除
2. 打包工具配置问题
- 如果使用 Webpack/Vite 等工具,可能因以下原因导致功能异常:
- 模块打包未正确合并:Hamibot 要求所有代码合并为一个文件,避免
require()
或import
语法。 - 未处理全局变量:脚本中使用的全局变量(如
device
、files
等)可能被打包工具错误优化。
- 模块打包未正确合并:Hamibot 要求所有代码合并为一个文件,避免
- 解决方案:
- 使用
npm run build
生成的文件需手动检查是否包含所有逻辑,无遗漏。 - 在打包配置中禁用代码压缩(如
TerserPlugin
)或调整压缩参数。
- 使用
3. 权限或执行环境问题
- 即使脚本打包正确,若未授予 无障碍服务 或 后台弹窗权限,部分功能可能失效。
- 解决方案:
- 参考文档 常见问题 确认权限已开启。
- 检查 Hamibot App 日志(右上角图标)是否有报错信息。
4. 文件上传或调用错误
- 上传的 JS 文件可能未被正确识别(如文件名非
.js
后缀、文件损坏)。 - 解决方案:
- 重新上传文件,确保文件扩展名为
.js
。 - 在脚本编辑界面检查文件内容是否与打包后的代码一致。
- 重新上传文件,确保文件扩展名为
验证步骤
- 简化测试:用最小化代码(如
toast("Hello")
)打包后上传,确认是否能正常运行。 - 日志排查:运行脚本后,打开 Hamibot App 日志查看是否有
Uncaught ReferenceError
或其他异常。 - 兼容性检查:使用 Babel 将代码转换为 ES5 标准后再打包。
若问题仍未解决,建议将打包后的代码片段和报错日志发送至 support@hamibot.cn 进一步分析。
ℹ️ 本回答由 AI 生成,内容仅供参考