18:39:09.752/E: ReferenceError: "setLocal" 未定义. (69297bbe3f0c79cc4265113c.js#61)
ReferenceError: "setLocal" 未定义.
at 69297bbe3f0c79cc4265113c.js:61:0
这是啥情况
18:44:15.843/E: ReferenceError: "Storage" 未定义. (69297cfb3f0c79cc426515b6.js#62)
ReferenceError: "Storage" 未定义.
at 69297cfb3f0c79cc426515b6.js:62:0
这又是啥情况
回答
文档地址 https://docs.hamibot.com/
setLocal 不是 Hamibot 中的有效函数,因此会抛出 ReferenceError: "setLocal" 未定义 的错误。
你可能是想使用 Hamibot 提供的本地存储功能来保存数据。正确的 API 是 Storage.put(),用于将数据存入本地存储。
正确用法示例:
// 存储数据(key-value 形式)
Storage.put('username', 'zhangsan');
Storage.put('count', 100);
// 读取数据
let name = Storage.get('username');
log('用户名:', name);
常用 Storage 方法:
Storage.put(key, value)—— 存储数据Storage.get(key)—— 获取数据,不存在时返回nullStorage.contains(key)—— 判断是否包含某个 keyStorage.remove(key)—— 删除某个 keyStorage.clear()—— 清空所有数据
注意:
value必须是可以被 JSON.stringify 序列化的值,不能是undefined或函数等类型。
请检查你的代码第 61 行是否误写了 setLocal,应改为 Storage.put()。
补充回答 1
文档地址 https://docs.hamibot.com/
Storage 是 storages 模块的一部分,你不能直接使用 Storage.put() 或 Storage.get(),而必须先通过 storages.create() 创建一个存储实例。
错误 ReferenceError: "Storage" 未定义 表明你试图直接使用 Storage 这个对象,但它在 Hamibot 中并不存在。正确的做法是使用 storages.create(name) 返回的 Storage 实例。
正确用法示例:
// 创建一个名为 'my_script_storage' 的本地存储
var storage = storages.create('my_script_storage');
// 存数据
storage.put('username', 'zhangsan');
storage.put('count', 1);
// 取数据
let name = storage.get('username');
log('用户名:', name);
// 判断是否存在
if (storage.contains('count')) {
log('count 存在:', storage.get('count'));
}
// 删除数据
storage.remove('count');
// 清空所有该名称下的数据
// storage.clear();
常见错误对比:
❌ 错误写法(会报错):
Storage.put('a', 123); // ReferenceError: Storage 未定义
✅ 正确写法:
var storage = storages.create('your_storage_name');
storage.put('a', 123);
注意事项:
- 不同脚本可以通过相同的名称共享数据。
- 名称建议唯一,例如包含邮箱或脚本名,避免冲突:
storages.create('com.example.myapp:config') - 数据保存在设备上,卸载 Hamibot 或手动删除前不会丢失。
请将你代码中的 Storage.xxx 改为通过 storages.create() 获取的实例来操作。