Чтение извлечения данных JavaScript - PullRequest
0 голосов
/ 09 мая 2019

Я разрабатываю проект js-узла. У меня есть zip-файл, который я хочу извлечь, затем я читаю один из файлов внутри извлеченного zip-файла.Проблема в том, что я даже кодирую функцию для извлечения перед функцией readfile, которую я вызываю в обратном вызове.У меня всегда нет такой ошибки файла или каталога, как перед чтением передается файл чтения. Помощь !!

Это мой код

var unzip = require('unzip');
const fs = require('fs');
var stream =  fs.createReadStream(zipFilePath).pipe(unzip.Extract({ path: 'files/em' }));
stream.on('finish', function () {
  fs.readFileSync('files/em/data.json') ;//read the extracted file but always the extraction passed after this
});

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Вы не наблюдаете правильное событие.Событие 'finish', равное createReadStream(), запускается до того, как происходит процесс распаковки.Вместо этого вы должны прослушать событие 'close' процесса распаковки, чтобы убедиться, что извлечение выполнено.

const unzip = require('unzip');
const fs = require('fs');

const zipFilePath = 'files/data.zip'

let extract = unzip.Extract({ path: 'files/em' })
let stream = fs.createReadStream(zipFilePath).pipe(extract);

extract.on('close', () => {
  let data = fs.readFileSync('files/em/data.json') ;
  console.log(data.toString())  // print your unziped json file
})
0 голосов
/ 09 мая 2019

путь должен быть каталогом, 'unzip.Extract ({путь:' файлы / em '})'

...