這是我的第一個SE問題。通常我可以很容易地通過這個偉大的網站找到任何答案,但不幸的是,在這個場合我無法在這裏或其他地方找到任何關於我所尋找的東西。讓我解釋一下這個問題:如何在節點上運行Heroku上的可執行文件,在本地工作
我寫了一個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是如何工作的,我沒有特別的瞭解,我已經閱讀了關於構建包等的信息,但是執行二進制文件似乎是一個非常複雜的過程。是因爲我只有一個測功機,它不能運行子進程?
如果有人能在這裏指出我正確的方向,我將非常感激,似乎我已經完成了所有的努力工作,但無法克服最後的障礙。