我有一个可以从命令行运行的简单程序.此程序用于markdown文件的实时预览.当我打包应用程序时
cat $NW/nw marknow.nw > marknow
Run Code Online (Sandbox Code Playgroud)
并从不同的位置运行:
./build/marknow ../relative/path/to/file.md
Run Code Online (Sandbox Code Playgroud)
我无法获得当前的工作目录.
process.cwd()
Run Code Online (Sandbox Code Playgroud)
正在返回/ tmp/something ???
如何在node-webkit中获取工作目录?./build/marknow ../relative/path/to/file.md调用的目录.
我目前正在编写一个Web应用程序,后来我打算使用node-webkit进行部署.我希望尽可能少地使用node.js,以便我可以轻松地部署到Web而无需重写大部分代码.
我正在使用Jam.js作为包管理器.显然存在node.js require与require.js冲突的问题require.使用requirejs而不是require似乎是一个很好的选择.但是,Jam.js编译require.config.js文件并在其中使用require(而不是requirejs).
目前,我必须做的window.require = undefined;是让Jam.js的require.js在node-webkit中工作.
有没有办法让Jam.js使用requirejs而不是require?编译require.config.js文件?
或者是否有一个不同的解决方案,让我使用Jam.js和node.js,require而不必做类似的事情window.require = undefined;?我发现node-webkit FAQ中提供的解决方案并不令人满意.
谢谢你的帮助!
在node-webkit中,如何在页面加载时设置窗口的背景颜色?它似乎总是白色的,但我要么是透明的,要么(在我的情况下)是绿色的.
我尝试过设置package.json transparent: true的window选项,但似乎没有任何效果.
在使用node-webkit for windows构建应用程序时,我需要在没有对话框的情况下进行打印.这可能吗?
类似于:http://drziegler.net/kiosksilent-printing-in-google-chrome/
任何帮助表示赞赏.
我正在用C++编写一个node-webkit插件来解码图像数据并将一组像素数据返回给调用者.以下代码(为简洁而删节)工作得很好:
caller.js
var image_data = canvas_context.createImageData(w, h);
var addon = require('decoder.node');
var decoder = new addon.Decoder();
var pixel_array = decoder.getPixelArray();
image_data.data.set(pixel_array);
canvas_context.putImageData(image_data);
Run Code Online (Sandbox Code Playgroud)
decoder.cpp
Handle<Value> Decoder::getPixelArray(const Arguments &args) {
HandleScope scope;
// unwrap self
DecoderObj *obj = ObjectWrap::Unwrap<DecoderObj>(args.This());
if (obj == NULL) return scope.Close(Number::New(1));
// get pointer to pixel data
PixelPtr *ptr = NULL;
uint64_t len = 0;
obj->GetPixelsPtr((PixelPtr*)&ptr, &len);
// create javascript native array
// from http://luismreis.github.io/node-bindings-guide/docs/returning.html
v8::Handle<Value> fun_val = Context::GetCurrent()->Global()->Get(String::New("Uint8ClampedArray"));
v8::Handle<Function> fun = v8::Handle<Function>::Cast(fun_val);
const unsigned argc = 1; …Run Code Online (Sandbox Code Playgroud) 我想像这个应用程序一样创建一个相同类型的托盘菜单.因为它位于使用node-webkit/nw.js的应用程序列表中,所以我认为这是可能的.我查看了所有文档,但找不到任何关于如何实现这一点的内容.搜索Google也不是很有成效.
也许你们其中一个人之前做过这件事并且可以把我送到正确的方向?
我一直在考虑学习如何基于网络技术制作简单的Mac OS X应用程序,我遇到了node-webkit,这看起来很引人注目.但是,我最近投入了学习Sinatra/Ruby的基础知识,我想继续学习这门课程.
对于使用Sinatra的开发人员,是否存在"node-webkit等效"?或者,是否有推荐的方法使用Sinatra框架(或Ruby)来构建基本上是Web包装器的OS X应用程序?
我正试图在我的Windows文件系统上的其他地方启动.exe.
spawn = require('child_process').spawn;
game.process = spawn(path.join(config.values.armaPath, 'arma3.exe'), {
detached: true
});
Run Code Online (Sandbox Code Playgroud)
我把它包装在try/catch中,我得到的错误没有帮助:
Error {code: "UNKNOWN", errno: "UNKNOWN", syscall: "spawn", stack: (...), message: "spawn UNKNOWN"}code: "UNKNOWN"errno: "UNKNOWN"message: "spawn UNKNOWN"
Run Code Online (Sandbox Code Playgroud)
我已经确认.exe的path.join是正确的.
我也试过了
game.process.stdout.on('error'...
Run Code Online (Sandbox Code Playgroud)
但那永远不会开火.
编辑,我也尝试了另一种方法:
var child = execFile(path.join(config.values.armaPath, 'arma3.exe'),
function(error,stdout,stderr) {
if (error) {
console.log(error.stack);
console.log('Error code: '+ error.code);
console.log('Signal received: '+ error.signal);
}
console.log('Child Process stdout: '+ stdout);
console.log('Child Process stderr: '+ stderr);
}
);
Run Code Online (Sandbox Code Playgroud)
但是这只是相同代码的错误,就像在调用spawn函数的回调之前抛出了try/catch块错误.
有趣的是,我尝试在同一目录中调用.exe,它确实有效......