gpt4 book ai didi

c++ - 如何从 Node 在 Heroku 上运行可执行文件,在本地工作

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:56 26 4
gpt4 key购买 nike

这是我的第一个 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 等的信息,但执行二进制文件似乎是一个非常复杂的过程。是不是因为我只有一个dyno,不能运行子进程?

如果有人能在这里为我指明正确的方向,我将不胜感激,看来我已经完成了所有的努力,但无法越过最后的障碍。

最佳答案

好的,我已经开始工作了,很多人可能对此感兴趣,所以我将发布我是如何做到的。

问题是 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 应用程序中,并且将像在本地主机上一样运行。

关于c++ - 如何从 Node 在 Heroku 上运行可执行文件,在本地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39685489/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com