2012-07-26 35 views
7

Estoy creando un proceso automatizado de compilación de la aplicación web con node.js en Windows. Estoy intentando ejecutar nuestro código a través del programa Google closure java. Leí la documentación sobre child_process en los documentos del nodo. Menciona que aún no funciona en Windows. ¿Hay algún paquete o solución para esto?¿Cómo se ejecuta un programa externo en node.js en Windows?

Aquí está tratando de ejecutar el código.

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

Me pregunto si hay un paquete de nodo o algún otro trabajo en torno a que no soy consciente de. El nodo está funcionando muy bien en general, este paso del archivo jar es una pequeña parte del proceso general, y la mayoría del equipo está en OSx/Linux. – Joel

Respuesta

13

Tengo una aplicación de servidor web para controlar una cola de generaciones en Windows XP y lo utilizaron para ejecutar archivos por lotes o ejecutables sin ningún paquete adicional.

Verificaría el parámetro de error en la devolución de llamada y stderr ya que esto puede ayudarlo a encontrar la razón por la que no funciona.

Mi solución ejemplo de mi servidor que espero ayuda:

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 

    }); 
+0

gracias. El error que recibo es: 'java' no se reconoce como un comando interno o externo, programa operable o archivo por lotes. ¿Puede el nodo no usar entornos del sistema vars? – Joel

+1

Acabo de probar, puse mi exe en una carpeta en la ruta y fue encontrado. Pero obtengo su error exacto si pongo un nombre de exe inexistente. Parece que es un problema para resolver la ruta/ubicación de java.exe – miltonb

+0

Sí, ese era el problema. Agregué la ruta completa a java.exe y está funcionando ahora. Gracias. Ahora necesito hacerlo funcionar en otras configuraciones de máquina. java.exe no funcionará en OSX o Linux. – Joel

Cuestiones relacionadas