-
Notifications
You must be signed in to change notification settings - Fork 429
无法更新到最新版2001191 #293
Comments
跟进一下情况,发现了如下的错误,似乎是底层对nw.Menu的操作出现了下标访问错误,正在尝试注掉相关的代码 另外这个报错源自于chromium的源代码,
|
再更新一下追踪信息,调试下来,应该是发生在了JS代码的menu.removeAt(5)部分,初步估计应该是gnome的菜单会自动合并分隔符,导致remove的过程中,自动合并掉了重复的分割菜单,导致native那边的实际menuItem数量和js内的不一致 |
按你这个猜想,写了个 patch 放到 package.nw/js/core/index.js 文件最前面,就不会闪退了 const oldMenuAppend = nw.Menu.prototype.append
const oldMenuInsert = nw.Menu.prototype.insert
function isSeparator(menu_item) {
return menu_item && menu_item.type === 'separator'
}
nw.Menu.prototype.append = function (menu_item) {
const items = this.items
const len = this.items.length
if (~items.indexOf(menu_item)) return
if (len === 0 && isSeparator(menu_item)) {
return menu_item._destroy()
}
if (!isSeparator(menu_item) || !isSeparator(items[len - 1])) {
oldMenuAppend.call(this, menu_item)
} else {
return menu_item._destroy()
}
}
nw.Menu.prototype.insert = function (menu_item, i) {
const items = this.items
const len = this.items.length
if (~items.indexOf(menu_item)) return
if (len === 0 && isSeparator(menu_item)) {
return menu_item._destroy()
}
if (!isSeparator(menu_item) || (!isSeparator(items[i]) && !isSeparator(items[i - 1]))) {
oldMenuInsert.call(this, menu_item)
} else {
return menu_item._destroy()
}
} |
你的方案虽然可以跑,但是修改了具体的menuitem列表,可能会导致后面的代码逻辑出现问题,因为我看了一下微信的menu管理方案……很糙的,完全依靠下标和总量来硬管理,所以很可能会导致后期菜单紊乱和重复,该删的没删掉(因为下标已经和微信自己预估的不一致了)。当然,现阶段应该没有问题。 |
简单的运行
update_package_nw.sh
在最新版是不行的,编辑器和调试器的界面起不来。我看了一下,官方新版升级了
nwjs
到0.39.3
,然后我修改了nwjs_v
,运行了update_nwjs.sh
,但是同时意味着node
也被升级到了12.6.0
。两边都升级完以后,依旧不行。追踪了一下,发现有很多native的模块因为efi不对,所以加载失败了。将这些模块重新编译到linux格式(记得更新
node
到12,module_version
否则不对),可以看到编辑器起来了,但是马上闪退,有一闪而过的spawn错误对话框,但是只出现了一开头几次,后面几次尝试启动就看不到了之后的尝试就没有进行,希望上述信息可以提供一点帮助
The text was updated successfully, but these errors were encountered: