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

编码器保存功能不奏效 #135

Closed
5 of 13 tasks
K4ngx opened this issue Mar 22, 2019 · 5 comments
Closed
5 of 13 tasks

编码器保存功能不奏效 #135

K4ngx opened this issue Mar 22, 2019 · 5 comments
Labels
🐛Bug 程序自身问题

Comments

@K4ngx
Copy link

K4ngx commented Mar 22, 2019

  • 我确定这是蚁剑本身的一个 Bug,我并不是在询问如何使用蚁剑
  • 我确定已经将蚁剑升级至软件发布页面中的最新版
  • 我已经阅读过蚁剑的开发文档,并且尝试过自己通过Google等方式解决问题
  • 这是一个新功能的建议
  • 我查阅了文档没找到解决方案,所以来询问如何使用蚁剑

报告 Bug

  • 我使用的操作系统是 macOS 10+
  • 我使用的操作系统是 Debian/Ubuntu GNU/Linux
  • 我使用的操作系统是 Fedora GNU/Linux
  • 我使用的操作系统是 Arch GNU/Linux
  • 我使用的操作系统是 Other GNU/Linux
  • 我使用的操作系统是 Windows 7

  • 我使用的是 32 位操作系统
  • 我使用的是 64 位操作系统

Bug 详细描述

在编写一个新的编码器并初次保存后,该编码器可正常使用。但是在后续对编码器进行修改编辑并保存时,虽然显示保存成功,然而经过多次的测试和wireshark的抓包分析,结果是我对该编码器所做的后续修改都没有奏效。

@Medicean
Copy link
Collaborator

Medicean commented Mar 22, 2019

首先定位一下问题所在, 是没成功保存文件,还是编码器代码逻辑问题.

1) 查看 antData/encoders/ 下面你编辑保存的编码器文件,是不是真的保存成功了

2)如果保存成功了,重新 reload 程序,可以在开发者控制台里面调试你的编码器代码,看下是不是编码器代码的问题。

最简单的测试编码器有没有正常加载,可以在编码器的函数代码内插入 console.log(123456); ,然后在开发者控制台看有没有执行.

@Medicean Medicean added the 🔍Pending Confirm 待确认 label Mar 22, 2019
@K4ngx
Copy link
Author

K4ngx commented Mar 22, 2019

测试了一下,发现编码器初次的保存是不需要reload便能生效的,而后续做的修改的确保存成功了,但是需要reload才能生效。请问对编码器后续发生的修改是否可以实现立即生效而不需要reload呢。

@Medicean
Copy link
Collaborator

用的都是同一个方法

const inter = setInterval(editor.resize.bind(editor), 200);
_win.win.attachEvent('onClose', () => {
self.syncencoders();
clearInterval(inter);
return true;
});

具体为何产生这样原因,我这边复现不出来,你那边能打个断点追一下原因吗?

@K4ngx
Copy link
Author

K4ngx commented Mar 23, 2019

经过调试发现问题在于编码器的require引入。nodejs require存在缓存机制,无法检测到文件变化。因此问题不在于编码器是否是第一次保存;而在于该编码器若被require引入过一次,后续的内容改变皆无法生效,返回的依然是第一次引入的文件内容。

parseEncoder(enc) {
// 加载编码器
// QAQ!我也不知道为什么,如果直接require变量名,babel编译就会warning,so我只好加个`咯~
this['__encoder__'][enc.indexOf(`encoder/`) > -1 ? enc.split(`encoder/`)[1]:enc.split(`encoder\\`)[1]] = require(`${enc}`);
}

因此需要在每次重复引用之前删除对应缓存。在186行前插入如下代码即可

delete require.cache[require.resolve(`${enc}`)];

或者也可以尝试在编码器内容发生改变时,删除该编码器的require缓存(也许这个方法更好)。

@Medicean Medicean added 🐛Bug 程序自身问题 and removed 🔍Pending Confirm 待确认 labels Mar 27, 2019
@Medicean
Copy link
Collaborator

thx 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛Bug 程序自身问题
Projects
None yet
Development

No branches or pull requests

2 participants