回答
Hamibot 在线编辑器目前暂不支持直接管理多文件项目。如果你需要使用多文件结构,有两种主要方案:本地开发打包后上传,或通过 API 上传多文件。
方案一:本地开发打包为单文件(适合在线编辑器)
由于在线编辑器仅支持单文件上传,你需要在本地将多个模块的代码合并到一个文件中,然后上传。
- 本地开发:在本地使用
module.exports和require组织代码。 - 代码合并:上传前,将依赖模块的代码内容直接复制到主脚本文件中,并移除
require和module.exports相关逻辑,确保所有函数在同一作用域内可用。 - 上传:将合并后的单文件通过在线编辑器上传。
方案二:通过 API 上传多文件(适合高级用户)
Hamibot 后端支持多文件存储,你可以通过 API 接口上传多个文件,这样 require 机制可以正常工作。
- 准备文件:本地准备好
index.js(入口文件)和其他模块文件(如utils.js)。 - 调用 API:使用
PUT /v1/devscripts/{id}/files接口上传多个文件。
示例命令(curl):
curl \
-X PUT \
-H "Authorization: 你的令牌(hmp 开头)" \
-F "data=@index.js;type=application/javascript" \
-F "data=@utils.js;type=application/javascript" \
https://api.hamibot.com/v1/devscripts/脚本 ID/files
模块化代码示例
在本地开发时,你可以按照以下标准模块写法编写代码。注意 Hamibot 使用 Rhino 引擎,需避免使用箭头函数等新特性。
utils.js (工具模块)
// 文档地址 https://docs.hamibot.com/
var PI = Math.PI;
var utils = {};
utils.getArea = function (r) {
return PI * r * r;
};
utils.getCircumference = function (r) {
return 2 * PI * r;
};
module.exports = utils;
index.js (主入口)
// 文档地址 https://docs.hamibot.com/
var utils = require('utils.js');
var r = 4;
log('半径为 ' + r + ' 的圆面积是 ' + utils.getArea(r));
log('半径为 ' + r + ' 的圆周长是 ' + utils.getCircumference(r));
注意事项
- 兼容性:脚本运行环境为 Rhino 1.7.15,编写代码时不要使用箭头函数、默认参数值、
let/const(建议统一使用var)等 ES6+ 特性。 - 文件路径:使用
require时,确保文件名正确,通常需要在同一目录下。 - 变量私有性:模块内的变量默认私有,只有通过
module.exports导出的内容才能被外部访问。
如果你希望通过在线编辑器快速迭代,建议前期先将所有逻辑写在单个文件中,待脚本稳定后再通过 API 方式管理多文件项目。
ℹ️ 本回答由 AI 生成,内容仅供参考
