2

ノードの初心者はこちら。.tar.xz以下に示すコードを使用して、ファイルをダウンロードしてディレクトリに抽出しようとしています。

var request = require('request');
var tar = require('tar');
var xz = require('xz');

function downloadRaw(url, callback)
{
    return request({
        encoding: null,
        url: url
    }, callback);
}

function extractToDirectory(url, directory, callback)
{
    return downloadRaw(url)
        .pipe(new xz.Decompressor())
        .pipe(tar.Extract(directory))
        .on('finish', callback);
}

何らかの理由で'finish'、tar ストリームのイベントは、アーカイブのコンテンツの抽出が終了した後でも発生していないようです。tarは npm 自身が管理しているライブラリなので、ここで何らかの間違いを犯していると思います。とにかく、なぜこれが起こっているのですか?それを修正するにはどうすればよいですか?

4

2 に答える 2

0

downloadRaw はコールバックを受け取りますが、コールバックを渡さないため、未定義の値をリクエスト関数に渡します。

ストリーミング API を使用する場合は、これらの関数のいずれにもコールバックを渡さないでください。

実際、なぜその生の関数を気にする必要があるのでしょうか。なぜそうしないのですか:

return request(url)
.pipe(newxz.Decompressor())
.pipe(tar.Extract(directory))
 .on('finish', callback);
于 2016-01-24T21:48:20.947 に答える