-
Notifications
You must be signed in to change notification settings - Fork 66
3 修正不能启动的问题
本节主要进行修正上节中无法正常启动项目的问题。
nwjs是一个基于浏览器的,所以理论上会有一个开发者工具,调出开发者工具看看都发生了些什么错误。
尝试按F12没有反应,右键点击没有反应。
搜索nwjs文档 搜索结果
发现可以通过 --disable-devtools
参数禁用开发者工具,
检查 package.nw
文件,确实在 chromium-args
一项中包含有此参数,删除;
再启动,按F12,可以调出开发者工具了。
-
我们先尝试使用旧版nwjs是否可行
经过降级测试,发现0.47.0能够打开项目,0.47.1却不行。
-
我们检查nwjs的更新日志,看看这个版本过渡发生了什么。
https://github.com/nwjs/nw.js/blob/nw63/CHANGELOG.md#0471--07-24-2020
0.47.1 / 07-24-2020
Update Node.js to v14.6.0
Fix: Window opened with new_instance creates always mixed context (#7344)
[docs] add clang option for building Node
可以发现,这里有个
fix
记录,进入相关 issue 查看发现相关信息:
Expected behavior
When new window is opened with window.open and new_instance, it should open just as normal window.open as browser window context.
这个 issue 目的是在创建
new_instance
之后,新窗口是普通窗口而非 nwjs 的窗口。也就是说,开发者工具使用 0.47.0 之后的 nwjs 时:
打开项目(新窗口)会出现 nw 未定义(因为新窗口是普通窗口)。
-
于是我们需要找到一个方法让新窗口还是 nw 的方法。
浏览回复,发现一条指向文档的链接 JavaScript Contexts in NW.js
浏览文档可以看到有一个标题 Mixed Context Mode
查看相关内容:
Load Script in Mixed Context Mode
To enable Mixed context, add
--mixed-context
when starting NW.js or add it tochromium-args
in Manifest file.在
chromium-args
值中添加--mixed-context
即可启用 Mixed context。 -
添加参数值后启动,发现在显示标题菜单后,会出现崩溃现象
虽然崩溃了,但从标题菜单显示可以证明这个参数是有效的
崩溃部分内容如下,看样子是这个参数导致内部出现问题。
可以尝试提升 nwjs 版本看有没有修复这个问题的。
node[201811]: ../../third_party/node-nw/src/api/callback.cc:66:node::InternalCallbackScope::InternalCallbackScope(node::Environment *, Local<v8::Object>, const node::async_context &, int): Assertion `(Environment::GetCurrent(env->isolate())) == (env)' failed. 1: 0x7f3185622a55 node::Abort() [/mnt/disk2/wechat-devtools/wechat-devtools-for-wiki/nwjs0492/lib/libnode.so] 2: 0x7f3185622891 [/mnt/disk2/wechat-devtools/wechat-devtools-for-wiki/nwjs0492/lib/libnode.so] 3: 0x7f3185574831 node::InternalCallbackScope::InternalCallbackScope(node::Environment*, v8::Local<v8::Object>, node::async_context const&, int) [/mnt/disk2/wechat-devtools/wechat-devtools-for-wiki/nwjs0492/lib/libnode.so] 4: 0x7f31855cbf66 node::Environment::RunAndClearNativeImmediates(bool) [/mnt/disk2/wechat-devtools/wechat-devtools-for-wiki/nwjs0492/lib/libnode.so] 5: 0x7f3185a063ab [/mnt/disk2/wechat-devtools/wechat-devtools-for-wiki/nwjs0492/lib/libnode.so] 6: 0x7f3185a16adb [/mnt/disk2/wechat-devtools/wechat-devtools-for-wiki/nwjs0492/lib/libnode.so] 7: 0x7f3185a06921 uv_run [/mnt/disk2/wechat-devtools/wechat-devtools-for-wiki/nwjs0492/lib/libnode.so] 8: 0x7f31920fd231 [/mnt/disk2/wechat-devtools/wechat-devtools-for-wiki/nwjs0492/lib/libnw.so]
-
经过升级 nwjs 版本测试,
v0.53.1
版本正常启动。