2015-06-12 44 views
5

我试图在Windows文件系统的其他地方启动一个.exe文件。Node-webkit子产生UNKNOWN错误

spawn = require('child_process').spawn; 

game.process = spawn(path.join(config.values.armaPath, 'arma3.exe'), { 
    detached: true 
}); 

我包裹在一个try/catch,我得到的错误是没有帮助的:

Error {code: "UNKNOWN", errno: "UNKNOWN", syscall: "spawn", stack: (...), message: "spawn UNKNOWN"}code: "UNKNOWN"errno: "UNKNOWN"message: "spawn UNKNOWN" 

我已经证实,path.join的.exe文件正确。

我也试过

game.process.stdout.on('error'... 

但永远不会触发。

编辑,我也尝试另外一种方法:

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); 
    } 
); 

但是,这只是代码相同的错误,这就像在try/catch块错误从产卵函数调用回调之前被抛出。

有趣的是我已经打过电话在同一目录中的.exe和它的工作...

回答

5

.EXE有“运行此程序作为管理员”打勾目标。为了让node-webkit执行它,我的节点应用程序也必须以管理员身份运行。