node.js - Node js Google App Engine 中的 child_process
问题描述
我有一个在 localhost 上运行的 Node Express 服务器。它用于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");
})
})
这在本地有效。
我现在正在尝试使用 App Engine 将其部署在 Google Cloud Platform 上。
但是,当我访问我托管的网站并启动此 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?
解决方案
推荐阅读
- django - 使用来自 django 的 boto3 将图像上传到 amazon s3
- java - 如何模拟这个内部对象
- c# - c#在DataGridView中使用SqlCommand搜索文本框关键字
- php - 我正在使用 ordertable 进行服务器端响应。Html 标记双引号在 jsonencode 响应中不匹配
- php - 如何根据自定义帖子类型的子类别显示帖子?
- cocos2d-x - Cocos2d-x 运行动作-点击按钮
- spring - Spring JPA 规范:如何使用规范对聚合函数进行排序
- batch-file - 如何在循环中运行 curl 命令
- python - 分块加载csv文件
- f# - 64 位 F#/FSI:超大单文件功能的限制