creator3.x 插件系统存在一个问题:
升级插件后插件内 require 的脚本对象还是旧版的缓存
此问题在扩展面板的脚本复现,场景脚本也可能存在此问题
案例
插件升级前index.js文件;
// 旧版插件内 require
let tools = require('../tools.js')
// 导入对象内容 tools = {clone:xxx}
插件升级后index.js文件;
// 升级插件后 tools 脚本已经被修改成:
// tools = {initI18t:xxx,clone:xxx}
let tools = require('../tools.js')
// 实际上导入还是旧版插件缓存的对象 tools = {clone:xxx}
这问题会导致刚升级完的插件出现莫名其妙的问题
目前解决方法只能是检测插件是否被升级过,然后初始化时删除 require 的缓存
delete require.cache['xxx/tools.js'] ;