我正在尝试使用节点webkit语音识别API,但它给了我一个奇怪的行为.我这样初始化录音机:
var rec = new webkitSpeechRecognition();
rec.continuous = true;
rec.interimResults = true;
rec.onresult = function(e){ alert('result') };
rec.onstart = function(e){ alert('start') };
rec.onerror = function(e){ console.log(e); };
rec.onend = function(e){ alert('end') };
rec.onspeechstart = function(e){ alert('speechStart') };
rec.start();
Run Code Online (Sandbox Code Playgroud)
但是start()电话后没有任何事 唯一有效的插槽是end(),我无法弄清楚这个有用而不是其他的......我失去了什么?
我浏览这个Github问题(桌面应用的webkitSpeechRecognition?)但没有找到任何有用的信息.
我的node-webkit应用程序包含一个控制窗口和一个演示窗口.
控制窗口收集数据并最终通过该window.open功能启动演示窗口.
现在,演示窗口可以访问global变量中的一些信息.
现在我想通过创建SVG元素等来呈现该信息的图形表示.
我已经有一个javascript函数来完成这个,但我需要一些从控制窗口启动该函数的方法.
我不能直接调用它,因为那时函数必须访问其他窗口的DOM.
我已经尝试eval在其他窗口的对象上使用该函数,但是该消息使node-webkit崩溃
[18719:0522/205047:ERROR:breakpad_linux.cc(1225)] crash dump file written to
/tmp/chromium-renderer-minidump-788bf8d0c68301d5.dmp
Run Code Online (Sandbox Code Playgroud)
最好的方法是什么?
使用setInterval要定期检查一个全局变量?
我正在设置我的第一个node-webkit应用程序,我遇到了启动它的问题.我在Mac上,应用程序文件结构与下面相同.
Folder
index.html
package.json
Run Code Online (Sandbox Code Playgroud)
的package.json
{
"name": "Test App",
"main": "index.html",
"window": {
"toolbar": true,
"width": 800,
"height": 600
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在终端中运行'zip data*'来压缩应用程序并将zip文件重命名为'app.nw'.
当我将nw文件或原始文件夹拖到node-webkit上时,它无法正确打开我的应用程序,而是显示默认屏幕.

我正在开发一个nodewebkit应用程序,该应用程序使用Web Audio API记录麦克风数据并将其保存到磁盘.
我已经使用了RecordRTC框架,但是随着录制的进行,它没有提供将数据流式传输到磁盘的方法(考虑到录制时间可能超过一小时,这是必要的).
我似乎无法找到使用其他方法将数据流式传输到磁盘的好方法.如果有一个正确的方法来做到这一点,我会很感激有关正确的工具是什么的提示.
但是,我现在的非工作解决方案是:
这没有用,因为ReadableStreamBuffer一次只向fileWriter传输20个字节,而不是因为某些原因而排队来自麦克风的所有字节.
var wav = require('wav');
var streamBuffers = require("stream-buffers");
function convertFloat32ToInt16(buffer) {
var l = buffer.length;
var buf = new Int16Array(l);
while (l--) {
buf[l] = Math.min(1, buffer[l])*0x7FFF;
}
return buf.buffer;
}
var filePath = utils.getCwd() + '/recordings/demo.wav';
var fileWriter = new wav.FileWriter( filePath, {
channels: 1,
sampleRate: 48000,
bitDepth: 16
});
var myReadableStreamBuffer = new streamBuffers.ReadableStreamBuffer({
frequency: 0, // in milliseconds.
chunkSize: 2048 // in bytes.
});
myReadableStreamBuffer.pipe(fileWriter);
source.connect(scriptNode); …Run Code Online (Sandbox Code Playgroud) 我正在尝试构建pty.js以便在node-webkit(即nw.js)v0.8.6中使用:
mkdir testapp && cd testapp
nvm use 0.10.36
npm install -g nw-gyp
npm install pty.js
cd node_modules/pty.js
# Build the native addon for node-webkit v0.8.6:
nw-gyp configure --target=0.8.6 && nw-gyp build
Run Code Online (Sandbox Code Playgroud)
使用简单的app.js和index.html,应用程序在JavaScript控制台中启动时没有错误:
<!-- index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Hello World!</title>
</head>
<body>
<h1>Hello World!</h1>
<script src="app.js"></script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
// app.js
var pty = require('pty.js');
var term = pty.spawn('bash', [], {
name: …Run Code Online (Sandbox Code Playgroud) 我有一个基于Python的应用程序来控制LED.它用于Flask创建一个Web服务器,因此我可以使用HTML,CSS和JS来处理一个很好的UI.
我目前的流程:
python home.pylocalhost:5000浏览器我想进一步将它打包成一个nw.js(以前的node-webkit)应用程序.
基本上,我相信我只需要在窗口加载之前执行我的python脚本,这样我可靠的烧瓶Web服务器就会启动并创建一个localhost:5000页面供我的nw.js应用程序界面打开.
如何打包我的nw.js应用程序,以便它在启动时运行python脚本?
我正在使用NWJS开发桌面应用程序,我需要获取.exe文件的文件属性.
我已经尝试使用npm属性模块https://github.com/gagle/node-properties,但我得到一个空的Object.
properties.parse('./unzipped/File.exe', { path: true }, function (err, obj) {
if (err) {
console.log(err);
}
console.log(obj);
});
Run Code Online (Sandbox Code Playgroud)
我需要获取"文件版本"属性:

我也试过使用fs.stats而没有运气.有任何想法吗?
我创建了一个NodeJS(电子)代码,用于读取特定目录和子目录中的所有文件.我不想使用太多的高清资源,这就是为什么我在文件夹之间使用5ms的延迟.
现在我的问题.我希望我的NODE过程停止吗?我希望能够在停止时继续.我该怎么办?
换句话说:如何在所有文件和文件夹中行走时保持当前状态的索引,这样我就可以从停止时继续遍历.
谢谢
我的代码:
var walkAll=function(options){
var x=0
walk(options.dir,function(){})
function walk(dir,callback) {
var files=fs.readdirSync(dir);
var stat;
async.eachSeries(files,function(file,next){
file=dir +'/' + file
if (dir.match(/Recycle/)) return next()
if (dir.match(/.git/)) return next()
if (dir.match(/node_modules/)) return next()
fs.lstat(file,function(err,stat){
if(err) return next()
if(stat.mode==41398) return next()
if (stat.isDirectory()) {
setTimeout(function(file){
walk(file,next)
}.bind(null,file),5)
}
else{
x++
if(false || x % 1000===0) console.log((new Date().valueOf()-start)/1000,x,file)
next()
}
})
},function(){
callback()
})
}
}
walkAll({
dir:'c:/',
delay:1000
});
Run Code Online (Sandbox Code Playgroud) 在我的项目中,我使用了libvirt库.这些是libvirtapi的节点绑定.由于这个问题可能与其他绑定案件有关,我在这里发表我的问题.在使用npm install安装时会抛出警告(下面以一个为例)
../src/domain.cc: In static member function ‘static v8::Local<v8::Object> NLV::Domain::NewInstance(virDomainPtr)’:
../src/domain.cc:197:44: warning: ‘v8::Local<v8::Object> v8::Function::NewInstance() const’ is deprecated (declared at /home/mark/.node-gyp/6.3.1/include/node/v8.h:3243): Use maybe version [-Wdeprecated-declarations]
Local<Object> object = ctor->NewInstance();
^
Run Code Online (Sandbox Code Playgroud)
与普通节点应用程序一起使用时,后来不会出现任何问题.但是,当nw.js涉及到它时,由于NewInstance的使用,它会完全崩溃.有证据见:
....nwjs/nw: symbol lookup error: ..../project/node_modules/libvirt/
build/Release/libvirt.node:
undefined symbol: _ZN2v816FunctionTemplate3NewEPNS_7IsolateEPFvRKNS_20FunctionCallbackInfoINS_5ValueEEEENS_5LocalIS4_EENSA_INS_9SignatureEEEi
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
有问题的这个符号引用相同的方法 - NewInstance.
有问题的代码,纯粹的形式如下所示:
Domain::Domain(virDomainPtr handle) : NLVObject(handle) {}
Local<Object> Domain::NewInstance(virDomainPtr handle)
{
Nan::EscapableHandleScope scope;
Local<Function> ctor = Nan::New<Function>(constructor);
Local<Object> object = ctor->NewInstance();
...
Run Code Online (Sandbox Code Playgroud)
由于我对这些V8问题的熟练程度很高,也许有人可以告诉我要改变什么以及如何使其发挥作用.
这个问题非常简短且不言自明.我想知道如何在NW.js中运行我的Chrome扩展程序.
我知道你可以在NW.js中运行一个应用程序,我认为你也可以运行扩展程序吗?
关于这个话题我找不到多少.早在2013年,这样做的方式似乎是:
nw [path to manifest.json] --load-extension
Run Code Online (Sandbox Code Playgroud)
任何想法都表示赞赏!
google-chrome-extension google-chrome-app node-webkit nw.js nwjs