Запись страницы в файл node.js

Есть страница google spreadsheets. Гугл эксель, проще говоря. Я подгружаю страницу через needle, а потом записываю fs.writeFileSync('./table.html', spreadsheetsHtml, {encoding: 'utf8'});. Но записывается почему-то с ошибками Гру��па. Беда в том, что needle выдаёт уже такой текст с ошибками. Но, насколько я знаю, он автоматически определяет кодировки. В чем проблема?

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


needle.get('https://docs.google.com/spreadsheets/d/e/2PACX-1vQXRLX-aofeNtFqYUdnZEmOFmyW2mCjpOaoqLzpUPn1mKhLjDaLRXA3XjRXWpxWyXKMumMPOZ0cvnOu/pubhtml?gid=1239914093&single=true', function(error, response) {
        if (!error && response.statusCode == 200){
            fs.writeFileSync('./table.html', spreadsheetsHtml, {encoding: 'utf8'});
        }
});


Ответы (1 шт):

Автор решения: nörbörnën

В документации needle написано:

needle returns a readableStream object

и это очень удобно, так как readableStream - фундаментальная штуковина в .

Возвращает поток? Значит будет писать этот поток прямо в файл, без всяких дополнительных ухищрений - node.js best practices!

const path = require('path');
const fs = require('fs');
const needle = require('needle');

const filepath = path.join(__dirname, 'spreadsheet.html');
const fileStream = fs.createWriteStream(filepath);
const spreadsheetsStream = needle.get(
  'https://docs.google.com/spreadsheets/d/e/2PACX-1vQXRLX-aofeNtFqYUdnZEmOFmyW2mCjpOaoqLzpUPn1mKhLjDaLRXA3XjRXWpxWyXKMumMPOZ0cvnOu/pubhtml?gid=1239914093&single=true'
);
spreadsheetsStream.on('error', console.error);
fileStream.on('error', console.error);

spreadsheetsStream.pipe(fileStream);

Обратите внимание, что работа с потоками сильно отличается от fs.writeFileSync, так что вам прийдётся подписаться на событие finish или close, чтобы дождаться окончания записи файла. Я показывал как это делать в этом ответе.

→ Ссылка