如何从节点 运行 Heroku 上的可执行文件,在本地工作
How to run an executable on Heroku from node, works locally
这是我的第一个 SE 问题。通常我可以通过这个很棒的网站很容易地找到任何问题的答案,但不幸的是这次我无法在这里或其他地方找到我正在寻找的任何东西。让我解释一下问题:
我编写了一个 C++ 程序来进行一些数值计算。它接受命令行参数并写入标准输出,在我的系统 运行ning 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 没有正确地 运行ning 可执行文件。我对 Heroku 的工作原理不是特别了解,我已经阅读了有关 buildpacks 等的信息,但执行二进制文件似乎是一个非常复杂的过程。是不是因为我只有一个dyno,不能运行子进程?
如果有人能在这里为我指明正确的方向,我将不胜感激,看来我已经完成了所有的努力,但无法越过最后的障碍。
好的,我已经开始工作了,很多人可能对此感兴趣,所以我将 post 我是如何做到的。
问题是 Heroku 的体系结构与我机器上的体系结构不同,因此编译的程序根本不会 运行 在 Heroku 上。为了解决这个问题,我创建了一个 makefile 来编译 C++ 源代码,并使用
将其推送到 Heroku
$ git push heroku master
然后
$ heroku run bash
本质上是设置一个 bash shell 来访问你的 Heroku 实例。
从这里开始,使用
编译可执行文件
$ make
然后scp
这个可执行文件回到你的本地机器然后
$ git add .
$ git commit -m "added working executable"
和
$ git push heroku master
然后工作的可执行文件将出现在 Heroku 应用程序中,并且 运行 就像在本地主机上一样。
这是我的第一个 SE 问题。通常我可以通过这个很棒的网站很容易地找到任何问题的答案,但不幸的是这次我无法在这里或其他地方找到我正在寻找的任何东西。让我解释一下问题:
我编写了一个 C++ 程序来进行一些数值计算。它接受命令行参数并写入标准输出,在我的系统 运行ning 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 没有正确地 运行ning 可执行文件。我对 Heroku 的工作原理不是特别了解,我已经阅读了有关 buildpacks 等的信息,但执行二进制文件似乎是一个非常复杂的过程。是不是因为我只有一个dyno,不能运行子进程?
如果有人能在这里为我指明正确的方向,我将不胜感激,看来我已经完成了所有的努力,但无法越过最后的障碍。
好的,我已经开始工作了,很多人可能对此感兴趣,所以我将 post 我是如何做到的。
问题是 Heroku 的体系结构与我机器上的体系结构不同,因此编译的程序根本不会 运行 在 Heroku 上。为了解决这个问题,我创建了一个 makefile 来编译 C++ 源代码,并使用
将其推送到 Heroku$ git push heroku master
然后
$ heroku run bash
本质上是设置一个 bash shell 来访问你的 Heroku 实例。
从这里开始,使用
编译可执行文件$ make
然后scp
这个可执行文件回到你的本地机器然后
$ git add .
$ git commit -m "added working executable"
和
$ git push heroku master
然后工作的可执行文件将出现在 Heroku 应用程序中,并且 运行 就像在本地主机上一样。