我有一个小型 Web 服务,它基本上接收 PUT 并将有效负载保存到文件中。由于权限问题,文件写入可能会失败。我希望将其传达给客户。
为了更容易阅读,我将程序精简到最低限度。req.pipe 链在实际程序中要长得多。(有更多错误的可能性)
const fs = require('fs');
const express = require('express');
const app = express();
app.put('/write/:id', (req, res, next) => {
const filename = 'data/' + req.params.id;
console.log("write: " + filename);
req
.pipe(fs.createWriteStream(filename))
.on('error', next)
req.on('end', () => {
res.send('saved\n' );
console.log("sent response");
})
});
app.listen(8081, '0.0.0.0');
麻烦的是,无论我做什么,它总是会向客户端响应“已保存”。我有点希望那个next
电话能让我离开那里。
对服务器端发生的错误做出差异化响应的优雅方法是什么?