0

スライドシェアslide no 35pptでの参照

このコードを実行すると

var server = my_http.createServer();  

server.on("request", function(request,response){
var chunks = [];  
output     = fs.createWriteStream("./output");

request.on("data",function(chunk){

   chunks = forEachLine(chunks.concat(chunk),function(line){

      output.write(parseInt(line,10)*2);
      output.write("\n");

   })
});


request.on("end",function(){
   response.writeHeader(200,{"Content-Type":"plain/text"})
   response.end("OK\n");
   output.end()
   server.close()
})


});

server.listen("8080");

次のようにエラーが発生します

 chunks = forEachLine(chunks.concat(chunk),function(line){
            ^
ReferenceError: forEachLine is not defined

もちろん、いくつかのライブラリを含める必要があることは理解していますが、これをグーグルで検索しても何も見つかりませんでした。私はこれに完全な初心者なので、それを解決する方法がまったくわかりません。

どんな提案でもかなりの価値があります。

編集

提案された回答を使用すると、エラーが発生します

    events.js:72
        throw er; // Unhandled 'error' event
              ^
TypeError: Invalid non-string/buffer chunk
    at validChunk (_stream_writable.js:150:14)
    at WriteStream.Writable.write (_stream_writable.js:179:12)
    at /var/www/html/experimentation/nodejs/first.js:18:20
    at Array.forEach (native)
    at forEachLine (/var/www/html/experimentation/nodejs/first.js:8:60)
    at IncomingMessage.<anonymous> (/var/www/html/experimentation/nodejs/first.js:17:18)
    at IncomingMessage.EventEmitter.emit (events.js:95:17)
    at IncomingMessage.<anonymous> (_stream_readable.js:736:14)
    at IncomingMessage.EventEmitter.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:408:10)

ありがとう

4

1 に答える 1

0

proxy_stream.jsを参照

function forEachLine(chunks, callback) {
    var buffer = chunks.join("")
    buffer.substr(0, buffer.lastIndexOf("\n")).split("\n").forEach(callback)
    return buffer.substr(buffer.lastIndexOf("\n") + 1).split("\n")
}

リポジトリへのリンクは最初のスライドにありました。

エラーメッセージのLET's CODEで編集

今、実際の問題を知るようになりました。

私はnod v0.10を使用していましたが、ストリームを取得するのにバグがあるため、エラーが発生していました。v0.8 にダウングレードし、同じコードは完璧に機能しています。

于 2013-07-02T10:42:51.183 に答える