2017-03-28 7 views
0

かなり大きなzipファイルを解凍するために、さまざまなノード解凍モジュール(adm-zip、unzip、extract-zip)を試してきました。これらのモジュールのほぼすべてで、ジッパーが初めて成功したことがわかります。ノードサーバーが継続的に稼働している場合、与えられた.zipファイルを再度解凍する要求があると、上記のすべてのモジュールがいくつかのファイルのみを抽出し、zip内の残りのファイルは失われています。ノードサーバーが強制終了されて再起動されるたびに、最初の解凍は正しく行われ、その後は行われません。この理由は何でしょうか? 抽出されたファイルが処理されると、そのファイルが書き込まれるディレクトリをクリーニングしようとしました。後続の解凍は常に空のディレクトリに移動します。node.js unzipモジュールはほんの少数のファイルを抽出する

+0

コードを表示してください! – dyaa

+0

@dyaaコードを表示しても構いません。前述のように、私たちは、解凍のために第三者ノードのlibsを利用しています。抽出は巨大なアプリケーションの一部として行われるので、このエラーにつながる多くの依存関係があると確信しています。しかし、私はコードを更新します。 – svk

+1

再利用すべきではない変数を再利用しているようです。いずれにしても、[最小限の、完全で検証可能な例](https://stackoverflow.com/help/mcve)を作成してみてください。 – robertklep

答えて

2

私も同様の問題がありましたが、私の場合、根本的な原因は、抽出が終了する前にプロセスが終了していたことでした。

キーは、の抽出が完了した後でごみのクリーニングにつながるコードを実行することを確認することです。私の場合、私はwindow.location(Electron Framework)を、unzipモジュールのExtract()呼び出しが同期していると誤って仮定していました。

fs.createReadStream(fp).pipe(unzipper.Extract({ "path": dirname }) 
    .on('finish', function() { 
     //Extraction done, you can do any cleanup or navigation here. 
     window.location = 'listing.html'; 
    }) 
    .on('error',() => console.log("Error")) 
) 

あなたのためにおそらく後半が、将来的には私のような誰かにそう便利:ここ

は私のために成功したコードです。

関連する問題