mirror of
https://github.com/msojocs/wechat-web-devtools-linux.git
synced 2025-07-22 00:00:04 +08:00
1.8 KiB
1.8 KiB
修复创建云开发控制台窗口
分析
- 打开云开发控制台,提示
Uncaught TypeError:Cannot read property 'isDev' of undefined
- 定位错误出发位置
global.appConfig.isDev
- 打开云开发控制台与主界面的调试器,对比
global
对象,发现不一致,云开发控制台缺失大量属性; - 结合NW.js新特性(文档链接)
- 云开发控制台应与主界面共享变量,但在新特性后,二者隔离了;因此,修复方法就是让它们共享关键变量,可通过open方法的回调实现(经尝试设定
new_instance
与mixed_context
无效)
修复
定位Window.open位置
可通过断点调试实现
文件路径: package.nw/core.wxvpkg.ext/284af385b4ef6206861fea66a2452277.js
定位字符串:nw.Window.open
在回调函数中添加:
Object.keys(window).forEach(key=>{
if(!e.window[key]){
/*没有就添加*/
try{
e.window[key] = window[key];
}catch(e){
/*部分方法不可修改,会抛异常*/
console.error(e);
}
}
})
界面可显示,但一直停留在"等待开发者工具初始化"界面,主界面控制台显示MESSAGE_CENTER connection: invalid token PLUGIN_cloudconsolev1#{token}# , closing
经检查是token存储器被隔离了,于是可借助window
对象作为中间人传递此数据对象
处理TOKEN数据
修改token存储对象构造方法
constructor() {
if(window.tokenData){
/*有就直接用*/
this._sessionToken = window.tokenData._sessionToken
this._tokenMap = window.tokenData._tokenMap
}else{
/*没有就新建*/
(this._sessionToken = ""), (this._tokenMap = {});
window.tokenData=this;/*新建完要给中间人*/
}
}