Node-Webkitsubprocess执行

例如,我想执行一个自制软件命令

brew list 

我跟着文档,并执行它像这样:

 child = exec('brew', function (error, stdout, stderr) { console.log(stdout); console.log(stderr); }); 

我得到一个命令没有find错误,并认识到,如果我做/ usr / local / bin / brew作为它的工作命令。 然而,简单地使用“brew”也可以,因为我可以像命令行一样运行“brew”。

为什么会出现这种情况?为了让“brew”在节点中作为subprocess运行,需要做些什么? 我有一个感觉问题的一部分,因为node-webkit上的命令似乎从bin / sh执行。

谢谢

这可能取决于您如何启动node-webkit以及如何设置PATH 。 当我从命令行启动时,它从我的命令行环境(包括PATHinheritance了环境variables。 如果我通过在GUI中双击来启动它,它从系统(大概是/etc/paths )inheritance,并且在我的.bashrc / .bash_profile中添加的任何内容都不起作用。

另外,我并不是安全专家,但是我对最佳实践的理解将包括使用您运行的可执行文件的绝对path,所以通过设置环境variables很难欺骗。 通过这个措施,你最好使用完整的path来brew