Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug]: 上传多个js非指令关键词插件时导致ext.storageSet()的数据全部串到其中某一个插件的数据库内 #927

Closed
4 tasks done
xin-yu13 opened this issue Jul 21, 2024 · 6 comments
Labels
bug Something isn't working

Comments

@xin-yu13
Copy link

在提问之前...

  • 我理解 Issue 是用于反馈和解决问题的,而非吐槽评论区,将尽可能提供更多信息帮助问题解决
  • 我填写了简短且清晰明确的标题,以便开发者在翻阅 issue 列表时能快速确定大致问题。而不是“一个建议”、“卡住了”等
  • 我已查看master branch或最新测试版的更新内容,并未提及该 bug 已被修复的情况
  • 已有issue中并没有看见其他人与我反馈相同的问题

问题描述

当上传多个非指令关键词插件时,ext.storageSet()的数据会串到其中某一个非指令关键词插件的数据库内,并且ext.storageGet()的数据也会取到那个串了的数据库里

我上传了扩展名为“选择”和扩展名为“裸指令检测”的非指令关键词插件。“裸指令检测”插件会使用ext.storageSet()来上传数据。按照常理来说,“裸指令检测”插件的数据应该存储在data\default\extensions\裸指令检测\storage.db文件内,然而数据被上传到了data\default\extensions\选择\storage.db里。
1.4.5和1.5.0都有此问题存在。

如何复现

1.上传多个非指令关键词插件(为了更直观地看出问题,每个插件里最好都应该有ext.storageSet()的代码)
2.触发非指令关键词,以达到让ext.storageSet()上传数据的目的
3.打开海豹的插件数据文件夹data\default\extensions并观察这几个插件的数据库

你期望发生的

每个插件的数据应存储在各自的storage.db里

实际上发生的

多个非指令关键词插件的数据串到了其中一个插件的storage.db里

日志文件

日志无有效信息

截图

No response

海豹核心版本

1.5.0-dev+20240719.7e901d6

操作系统

Windows Sever 2022

帐号类型

QQ

使用协议

No response

附加内容

No response

@xin-yu13 xin-yu13 added the bug Something isn't working label Jul 21, 2024
@Szzrain
Copy link
Contributor

Szzrain commented Jul 22, 2024

无法复现,需要两个插件的源代码

@xin-yu13
Copy link
Author

无法复现,需要两个插件的源代码
插件源码.zip

@kenichiLyon
Copy link
Contributor

0722build包测了一遍,裸指令检测没有找到开启的指令,尝试用.ext 裸指令 on开启,没有效果,复现不出来是否存storage.db。我个人推测是裸指令检测未生效,不一定准确。准确原因等szz老师看源码。

@kenichiLyon
Copy link
Contributor

0722build包测了一遍,裸指令检测没有找到开启的指令,尝试用.ext 裸指令 on开启,没有效果,复现不出来是否存storage.db。我个人推测是裸指令检测未生效,不一定准确。准确原因等szz老师看源码。

补充:选择……还是……还是.js正常执行且正常存了storage.db

@Szzrain
Copy link
Contributor

Szzrain commented Jul 24, 2024

查看插件代码后,确认原因是因为你在两个插件中所定义的 ext 变量都没有使用 let 前缀,这将会导致 ext 成为一个全局变量
所以,这并非 bug 而是你自己插件代码的问题
ref:

ext = seal.ext.new('选择','星界之主','1.0.0');
ext = seal.ext.new('裸指令','星界','1.0.0');

@Szzrain Szzrain closed this as not planned Won't fix, can't repro, duplicate, stale Jul 24, 2024
@xin-yu13
Copy link
Author

查看插件代码后,确认原因是因为你在两个插件中所定义的 变量都没有使用 前缀,这将会导致 成为一个全局变量 所以,这并非 bug 而是你自己插件代码的问题 ref:ext``let``ext

ext = seal.ext.new('选择','星界之主','1.0.0');
ext = seal.ext.new('裸指令','星界','1.0.0');

原来是这样!不过,我看到在海豹手册的非指令关键词模版示例中,声明ext时都没有加上前缀。是否需要修改一下手册以避免更多人遇到相同的情况?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants