2016-04-17 9 views
0

Expressリクエストオブジェクトを書き込み可能なストリームにパイプ接続しようとしています。 NodeJSはファイルを作成しますが、空です。私は何が欠けていますか?Expressリクエストオブジェクトをファイルに保存します。

TypeError: Invalid non-string/buffer chunk 

私はws.write(REQを交換する場合:私はws.write(REQ)req.pipe(WS)を交換するとき、私はエラーを取得する

var express = require('express'); 
var fs = require('fs'); 

var app = express(); 
    app.use(middleWare); 
    app.listen(3000); 

function middleWare(req, res, next){ 
    var ws = fs.createWriteStream('./test.txt'); 
    req.pipe(ws); 
    res.sendStatus(200); 
} 

ws.write(JSON.stringify(req))私はエラーを受け取ります:

TypeError: Converting circular structure to JSON 
+0

これは非常に珍しいことですが、 'req'オブジェクトは一般にファイルに書き込まれることはありません。これで実際に何をしようとしていますか? – laggingreflex

+0

@laggingreflex、私は要求オブジェクトの構造を詳しく見てみたいです。出力は最大値を超えており、私は一番上にスクロールできないので、私はコンソールでこれを行うことはできません。 –

+0

[console.dirまたはutil.inspectはもっと深く表示できます](http://stackoverflow.com/questions/10729276/how-can-i-get-the-full-object-in-node-js-console-log -rather-than-object/27534731#27534731)、[chrome inspectorを持つノードデバッガが役立つかもしれません](https://mattdesl.svbtle.com/debugging-nodejs-in-chrome-devtools) – laggingreflex

答えて

0

文字列またはバッファはファイルにのみ書き込むことができます。

JSON.stringify()を使用してオブジェクトを文字列に変換しようとすると、循環参照がオブジェクトに含まれているため、この関数を使用できないという理由でエラーが発生します。

文字列に変換する前に、オブジェクトをconvertにしようとするとJSONに変換されます。

しかし、要求の関連するフィールドだけを抽出し、文字列に変換してファイルに保存することもできます。

+0

ありがとう!私は変換のためにNPMモジュール[CircularJSON](https://github.com/WebReflection/circular-json)を使用しました。すべてうまく動作します! –

関連する問題