Javascript / node:使用管道方法从读取流到http响应对象的问题

问题描述 投票:0回答:1

我想通过以下代码通过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
javascript node.js http fs
1个回答
0
投票

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);
© www.soinside.com 2019 - 2024. All rights reserved.