child_process в узле js Google App Engine - PullRequest
       38

child_process в узле js Google App Engine

0 голосов
/ 27 сентября 2019

У меня есть сервер Node Express, который работает на localhost.Он использует child_process для запуска автономного исполняемого файла C ++.

Код, который использует child_process, следующий (приложение создает output.txt):

app.post('/generate', async function(req, res)
{
    var input1 = req.body.input1;
    var input2 = req.body.input2;

    var execFile = require('child_process').execFile;

    var program = "path/to/executable";
    var args    = [input1, input2];

    var child = execFile(program, args,
        function (error, stdout, stderr){           
            console.log(error);
            console.log(stdout);
            console.log(stderr);

            const file = __dirname + "/output.txt"
            app.get('/output.txt', function (req, res) {
                res.sendFile(path.join(__dirname + '/output.txt'));
            });
            res.send("/output.txt");
        })
})

Это работает локально.

Сейчас я пытаюсь развернуть его на облачной платформе Google с помощью App Engine.

Однако, когда я захожу на сайт, на котором я размещаюсь, и запускаю этот запрос POST /generate, я не могуне получить ожидаемый результат.В журналах Google Cloud Platform моего проекта я вижу следующую ошибку:

 textPayload: "{ Error: spawn cpp/web_cpp_app/x64/Debug/web_cpp_app ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:240:19)
    at onErrorNT (internal/child_process.js:415:16)
    at process._tickCallback (internal/process/next_tick.js:63:19)
" 

Сначала я не понял ошибку, но теперь я вижу, что если я локально запускаю тот же проект, ноустановить путь к автономному исполняемому файлу с неверным путем, я получаю ту же ошибку.Я предполагаю, что при развертывании мой исполняемый файл как-то не включается?

Есть ли что-то конкретное, что мне нужно добавить в файлы package.json или app.yaml, чтобы включить исполняемый файл?

РЕДАКТИРОВАТЬ: Может ли быть так, что движок приложения работает на Linux, а мой исполняемый файл для Windows?

...