Cómo ejecutar un ejecutable en Heroku desde el nodo, funciona localmente

Esta es mi primera pregunta de SE Por lo general, puedo encontrar una respuesta a cualquier cosa con bastante facilidad a través de este gran sitio web, pero desafortunadamente en esta ocasión no puedo encontrar nada de lo que estoy buscando, ni aquí ni en ningún otro lugar. Déjame explicarte el problema:

He escrito un progtwig en C ++ para hacer algunos cálculos numéricos. Toma argumentos de la línea de comandos y escribe en la salida estándar y funciona bien en mi sistema que ejecuta OSX.

Quiero alojar esto en línea para que mis compañeros lo prueben más fácilmente, por lo que escribí un código Node.js y Express para tomar una entrada de un formulario y entregarlo como un argumento de línea de comandos al ejecutable. Luego ejecuto el binario llamado ‘factorizador’ de la siguiente manera:

const exec = require('child_process').exec; app.post('/', function (req, res) { var input = req.body.numberinput; //Number entered on the webpage const child = exec('./numericcomp ' + input, {timeout: 20000}, function(error, stdout, stderr) { //Code here writes stdout to the page } } 

Lo anterior funciona perfectamente en mi máquina local, pero cuando lo implemento en Heroku y luego bash una entrada (aquí intenté con el 2131) obtengo un error de:

 Error: Command failed: ./numericcomp 2131 ./numericcomp: 3: ./numericcomp: Syntax error: word unexpected (expecting ")") 

que se le da a la callback en exec.

Así que realmente no sé qué hacer, el problema es que Heroku simplemente no ejecuta el ejecutable correctamente. No tengo un conocimiento particular de cómo funciona Heroku, he leído información sobre paquetes de comstackción, etc. pero parece un proceso muy complicado solo para ejecutar un binario. ¿Es porque solo tengo un dinamómetro y no puedo ejecutar el proceso hijo?

Estaría muy agradecido si alguien pudiera apuntarme en la dirección correcta aquí, parece que he hecho todo el trabajo duro pero no puedo superar el último obstáculo.

Ok, lo tengo para trabajar, esto puede ser de interés para muchos, así que publicaré cómo lo hice.

El problema era que la architecture de Heroku no es la misma que la de mi máquina y, por lo tanto, el progtwig comstackdo simplemente no se ejecutaría en Heroku. Para solucionar esto, creé un makefile para comstackr el código fuente de C ++ y lo envié a Heroku usando

 $ git push heroku master 

Entonces

 $ heroku run bash 

que esencialmente establece una shell bash con acceso a su instancia de Heroku.

Desde aquí, comstack el ejecutable usando

 $ make 

Luego scp este ejecutable de nuevo a su máquina local y luego

 $ git add . $ git commit -m "added working executable" 

y

 $ git push heroku master 

Luego, el ejecutable de trabajo estará allí en la aplicación Heroku y se ejecutará como en el host local.

    Intereting Posts