【发布时间】:2017-02-02 18:33:22
【问题描述】:
这是我的第一个 SE 问题。通常我可以通过这个很棒的网站很容易地找到任何问题的答案,但不幸的是,在这种情况下,我找不到任何关于我正在寻找的东西,无论是在这里还是其他地方。让我解释一下问题:
我编写了一个 C++ 程序来进行一些数值计算。它接受命令行参数并写入标准输出,并在我运行 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
}
}
以上内容在我的本地机器上完美运行,但是当我将其部署到 Heroku 然后尝试输入(这里我尝试 2131)时,我收到以下错误:
Error: Command failed: ./numericcomp 2131 ./numericcomp: 3: ./numericcomp: Syntax error: word unexpected (expecting ")")
在 exec 中给回调函数。
所以我真的不知道该怎么办,问题是 Heroku 只是没有正确运行可执行文件。我对 Heroku 的工作原理并不是特别了解,我已经阅读了有关 buildpacks 等的信息,但仅执行二进制文件似乎是一个非常复杂的过程。是不是因为我只有一个测功机,不能运行子进程?
如果有人能在这里为我指明正确的方向,我将不胜感激,看来我已经完成了所有艰苦的工作,但无法克服最后的障碍。
【问题讨论】:
标签: c++ node.js express heroku buildpack