在Windows上如何在node.js中运行外部程序?

8
我正在使用node.js在Windows上创建自动化Web应用程序构建流程。我试图通过Google Closure Java程序运行我们的代码。我阅读了node文档中有关child_process的文档。它提到目前它在Windows上无法正常工作。是否有任何包或解决方法?以下是我正在尝试运行的代码:
var _exec = require('child_process').exec;
_exec( 'java ' + '-jar '+ COMPILER_JAR +' --js '+ srcPath +' --js_output_file '+ distPath, 
    function(e){
        echo( "google closure done....");
        echo( e );
    } );

1
我在想是否有一个节点包或其他解决方法,我不知道。总体而言,Node的工作非常出色,这个jar文件步骤只是整个过程中的一小部分,大多数团队都在OSx / Linux上。 - Joel
1个回答

15

我有一个用于控制Windows XP上构建队列的Web服务器应用程序,我使用它来运行批处理文件或可执行文件,不需要任何额外的软件包。

我建议在回调函数中检查错误参数和标准错误流,这可能有助于找到导致程序无法正常工作的原因。

以下是我的示例解决方案,希望能帮到你:

var theJobType = 'FOO';
var exec = require('child_process').exec;
var child = exec('Test.exe ' + theJobType, function( error, stdout, stderr) 
   {
       if ( error != null ) {
            console.log(stderr);
            // error handling & exit
       }

       // normal 

   });

我遇到的错误是: 'java' 不是内部或外部命令,也不是可运行的程序或批处理文件。Node 不能使用系统环境变量吗?谢谢。 - Joel
1
我刚刚进行了测试,将我的exe文件放在路径中的一个文件夹中,它被找到了。但是,如果我放置一个不存在的exe文件名,则会出现与您完全相同的错误。因此,似乎存在解析java.exe路径/位置的问题。 - miltonb
1
是的,那就是问题所在。我添加了java.exe的完整路径,现在它可以工作了。谢谢。现在我需要让它在其他机器配置上也可以工作。java.exe在OSX或Linux上不起作用。 - Joel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接