我想通过以下代码通过pipe
方法将文本文件的内容传递给服务器。
const {createServer}=require('http');
const {createReadStream}=require('fs');
let server=createServer((request,response)=>{
response.writeHead(200,{'Content-Type':'text/plain'});
let test=new Promise((resolve,reject)=>{
try{let src=createReadStream('D:\\Javascript\\JavascriptPlayGround\\text.txt');}
catch(err){reject(err);}
resolve(src);
})
.then(src=>src.pipe(response)).then(xxx=>response.end('ended'))
.catch(err=>console.log(err));
});
server.listen(8000);
但是出现以下错误
ReferenceError: src is not defined
at D:\Javascript\JavascriptPlayGround\server.js:10:13
src
在您尝试resolve
的范围内不存在。另外,您应该仅将文件流通过管道传递给响应,而不应调用end
。这样的事情应该起作用:
const {createServer} = require('http');
const {createReadStream} = require('fs');
let server = createServer((request, response) => {
response.writeHead(200, {'Content-Type': 'text/plain'});
let test = new Promise((resolve, reject) => {
let src;
try {
src = createReadStream(__dirname + '/data.csv');
} catch (err) {
reject(err);
}
resolve(src);
})
.then(src => src.pipe(response))
.catch(err => console.log(err));
});
server.listen(8000);