这是我的第一个SE问题.通常我可以通过这个伟大的网站轻松找到答案,但遗憾的是,在这个场合,我找不到任何关于我在寻找的东西,无论是在这里还是其他地方.让我解释一下这个问题:
我编写了一个C++程序来进行一些数值计算.它需要命令行参数并写入stdout,并在运行OSX的系统上正常工作.
我希望在线托管这个版本,让我的同行更容易地尝试一下,所以我编写了一些Node.js和Express代码来从表单中获取输入并将其作为命令行参数提供给可执行文件.然后我按以下方式执行名为'factoriser'的二进制文件:
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
}
}
Run Code Online (Sandbox Code Playgroud)
上面的工作完全在我的本地机器上但是当我将它部署到Heroku然后尝试输入(这里我试过2131)我得到一个错误:
Error: Command failed: ./numericcomp 2131 ./numericcomp: 3: ./numericcomp: Syntax error: word unexpected (expecting ")")
Run Code Online (Sandbox Code Playgroud)
这是exec中的回调.
所以我真的不知道该怎么做,问题是Heroku只是没有正确运行可执行文件.关于Heroku如何工作,我并不是特别了解,我已经阅读了有关buildpacks等的信息,但是执行二进制文件似乎是一个非常复杂的过程.是因为我只有一个dyno并且无法运行子进程吗?
如果有人能指出我正确的方向,我会非常感激,似乎我已经完成了所有艰苦的工作,但无法克服最后的障碍.