我在节点webkit中使用exec()
在保存文件后使用start filename
在操作系统的默认程序中打开文件。这是我的代码:
var fs = require('fs');
var myFile = "C:/TEMP/" + fileName;
fs.writeFile(myFile, rtf, function(err) {
if(err) {
alert("error");
}
});
var sys = require('sys');
var exec = require('child_process').exec;
var child;
child = exec("start " + myFile, function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}
});
有时会有效,但有时我会收到此错误:exec error: Error: Command failed: The process cannot access the file because it is being used by another process.
编辑:我看到微软有这个问题,rtf和txt文件在wordpad中打开(这是我的打开),所以我认为可能是这个过程挂起而不是正常死亡。在我打电话给它之前退出之前,我将默认程序更改为在Libre Office中打开并且有更好的结果(它没有经常发生),但是如果我尝试按顺序快速启动该功能,我仍然会得到错误。
答案 0 :(得分:0)
writeFile
是异步的。你需要这样的回调:
var fs = require('fs');
var myFile = "C:/TEMP/" + fileName;
fs.writeFile(myFile, rtf, function(err) {
if(err) {
alert("error");
}else{
lire();
});
var sys = require('sys');
var exec = require('child_process').exec;
var child;
function lire(){
child = exec("start " + myFile, function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
}
});
};