gpt4 book ai didi

node.js - 从派生命令管道输出时如何返回错误?

转载 作者:搜寻专家 更新时间:2023-10-31 22:53:48 24 4
gpt4 key购买 nike

我正在使用 express 从生成的命令(ffmpeg,无关紧要)传输标准输出,但如果子过程失败,我仍然会得到 200。

如果退出代码不为零,有什么方法可以返回 500? (我认为标题已经发送到那时):

const express = require('express');
const { spawn } = require('child_process');

var app = express();

app.get('/video', function(req, res) {
var cmd = "ffmpeg";
var args = ["--wat"];
var proc = spawn(cmd, args);
res.contentType('video/mp4');
proc.stdout.pipe(res);
proc.stderr.pipe(process.stdout);
proc.on("exit", code => {
console.log("child proc exited:", code);
//res.status(code > 0 ? 500 : 200).end();
});
res.on("close", () => {
proc.kill("SIGKILL");
});
});

app.listen(4000);

最佳答案

事实证明,pipe方法在响应上调用结束。所以解决方案是自己做:

proc.stdout.pipe(res, {end: false});
proc.on("error", err => {
console.log("error from ffmpeg", err.stack);
res.status(500).end();
});
proc.on("exit", code => {
console.log("child proc exited", code);
res.status(code === 200 ? 200 : 500).end();
});

关于node.js - 从派生命令管道输出时如何返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46237586/

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