node.js - NODEJS writeStream 错误

标签 node.js

var http = require('http');
var fs = require('fs').createWriteStream('file1');;

http.createServer(function(req, res) {
  // This opens up the writeable stream to `output`


  // This pipes the POST data to the file
  req.pipe(fs);

  // After all the data is saved, respond with a simple html form so they can post more data
  req.on('end', function () {
    res.writeHead(200, {"content-type":"text/html"});
    res.end('<form method="POST"><input name="test" /><input type="submit"></form>');
  });

  // This is here incase any errors occur
  fs.on('error', function (err) {
    console.log(err);
  });
}).listen(8080);

在上面的代码中,我尝试使用 POST 方法接受来自 HTML 表单的输入,并将其通过管道传输到文件的写入流中,但我无法实现并显示以下错误

{ [Error: EBADF, close] errno: 9, code: 'EBADF' }
{ [Error: EBADF, close] errno: 9, code: 'EBADF' }
{ [Error: EBADF, close] errno: 9, code: 'EBADF' }
{ [Error: EBADF, close] errno: 9, code: 'EBADF' }
{ [Error: EBADF, close] errno: 9, code: 'EBADF' }
{ [Error: EBADF, close] errno: 9, code: 'EBADF' }
{ [Error: EBADF, close] errno: 9, code: 'EBADF' }
{ [Error: EBADF, close] errno: 9, code: 'EBADF' }
{ [Error: EBADF, close] errno: 9, code: 'EBADF' }

出了什么问题,我应该做哪些修改才能成功地将数据从 POST 重定向到文件中?我读了这篇相关文章Node.js EBADF error when writing file using writable stream

但是还是找不到出路,我是一个NODEJS新手,请帮助我。谢谢...

最佳答案

默认情况下,当源流发出 end 信号时,目标端会调用 end() ,因此目标端不再可写。传递 { end: false } 作为选项以保持目标流打开。

你应该简单地这样做:

req.pipe(fs, { end: false });

这样你的错误就会消失。

关于node.js - NODEJS writeStream 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035753/

相关文章:

node.js - Angular 9 Node.js AWS - 从 'aws-sdk' 添加导入 AWS 后编译错误

javascript - Nodejs 中如何处理异步性?

node.js - 如何将基于 MongoDB 的分析扩展到每天数百万个事件?

mysql - 无法在 Ubuntu 12.04 上安装 Node.js 插件

Javascript 运行 "out of order"

javascript - 如何跨 NodeJs 应用程序和模块正确重用与 Mongodb 的连接

node.js - 通过邮件回复解锁一个nodejs程序

mongodb - 高级数据聚合 : counting average in MongoDB collections

javascript - 如何遍历数组/将数组映射到返回包含另一个 promise 的 promise 的函数

node.js - https.Agent 在 Node 中的作用是什么?