nw.js node-webkit系列(16)可能会遇到的故障及故障排除

本篇将介绍开发者在使用node-webkit中可能会遇到的故障。

(1)Audio故障

媒体文件在node-webkit开发中应该有用到,常遇到的问题是MP3格式和其他非自由媒体格式的编码器问题。详细请查看:

https://github.com/nwjs/nw.js/wiki/Using-MP3-%26-MP4-%28H.264%29-using-the--video--%26--audio--tags.


(2)WebGL故障

使用WebGL不可缺少来自DirectX 的两个DLL动态链接库,或者你的显卡驱动/程序不能再谷歌核心的黑名单中,详细请参考:

https://github.com/rogerwang/node-webkit/issues/185

有时候CSS不能正确的显示,比如说-webkit-transform:translateZ(-1000px);这可能就是WebGL的故障的原因了。


(3)node-webkit运行故障

node-webkit无法再你的电脑运行,可以参考:

https://github.com/nwjs/nw.js/issues/136

https://github.com/nwjs/nw.js/issues/770


(4)编程陷阱-Console and timers

Node.js 和 Chromium 各自有实现 setTimeout 和 console的方法。通常我们使用的console是由Chromium 实现的。因为可以在浏览器的开发者工具中查看到打印信息。

相对于 setTimeout 方法, WebKi实现的方法是window.setTimeout,Node实现的方法是global.setTimeout。

如果浏览器正在轮询渲染界面,这时建议使用global.setTimeout,因为它的准确度比window.setTimeout要高。


(5)编程陷阱-Transfer objects between window and node

当你在

Hello GUI菜单


window.hh = "hello world!!";
//使用到jQuery
$('#content').text('Modifying DOM elements');											    console.log(global.mm);


Operations that require window context

调用require请求的window context中的方法,代码如下:



// In cache.js
exports.get111 = function (key, callback) {}

(注)如果你想把js编写成一个类库让require直接调用(隐藏地址),如一个node context相对于多个窗口调用,请参照下面节内容:

nw.js node-webkit系列(15)如何使用内部模块和第三方模块进行开发


(6)打开app,窗口内显示找不到文件

有一种情况是,因为app路径带空格或者特殊字符,nw执行程序无法解析app路径以致无法打开app的情况,如Windows XP系统的桌面目录是C:\Documents and Settings\,当app在XP系统的桌面将无法被nw执行程序识别。针对这种情况,我们可以使用隐藏目录,只需要在package.json文件里修改如下即可:

{
	"main": "app://AppName/index.html"
}

(注):AppName可以取任意值,这里但是app://是必须的。


(7)在Windows系统上无法使用WebGL

只要在nw根目录上添加这两个文件即可:D3DCompiler_XX.dll and d3dx9_XX.dll


(8)node.js在nw上如何写服务端脚本

详细信息请查看:https://github.com/nwjs/nw.js/wiki/About-Node.js-server-side-script-in-nw.js


(9)nw的require()方法和RequireJS的require()冲突怎么办?

默认情况下系统使用的是nw的require()方法,针对这个问题,现在的RequireJS已经新增了一个调用名称requirejs,可以用此名称防止与nw的require()方法冲突。

你可能感兴趣的:(前端集合,nw.js桌面应用开发)