Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2019 March 19

DK

Dimitry Khrapal in NodeUA - JavaScript and Node.js in Ukraine
Спасибо большое !!!
источник

IG

Ivan Grekov in NodeUA - JavaScript and Node.js in Ukraine
Всем привет

Недавно начал изучать Node.js. Сейчас делаю небольшой генератор инвойсов с помощью puppeteer. Сначала на одной странице вводятся данные в поля textarea и есть вспомогательные кнопки для генерации,. При нажатии кнопки "Generate", я забираю при помощи фронтендового скрипта введенные данные и отправляю ajax-ом на сервер (Node.js). На стороне сервера через fs модуль создаю новый html-файл, уже без вспомогательных кнопок.

После этого, при переходе (пока нужно набирать самостоятельно в поисковой строке) на localhost:3000/create, я вывожу в браузер новый html-файл (уже без кнопок) под названием invoice.html.  Там же эмичу событие 'toPdf', которое в браузере при помощи пакета opn открывает адрес localhost:3000/generate.

Все что происходит при запросе адреса  localhost:3000/generate, это эмит события 'generatePdf', который непосредственно и преобразовывает страницу invoice.html в pdf и выводит при помощи пакет opn этот файл в браузер.

Проблема вот в чем: когда эмитится событие 'toPdf', адрес localhost:3000/generate открывается 2 раза, после чего открывается сгенерированный pdf-файл. И все бы ничего, но потом окна с /generate и pdf-файлом начинают открываться без остановки, что как бы не есть хорошо. И остановить поток открывающихся окон можно только остановкой сервера. Не могу понять в чем проблема.

Ниже оставляю код, если у кого-то есть идеи как эту проблему исправить - буду благодарен.

Ссылка на код: https://pastebin.com/QSeL6QcK
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
emitter.on('toPdf', () => {
   opn('http://localhost:3000/generate');
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
это гет запрос на роут генерейт
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
await page.goto(url, {waitUntil: 'networkidle2'});
источник

TS

Terry Sahaidak in NodeUA - JavaScript and Node.js in Ukraine
для чого там взагалі івент-еміттер?
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
это похоже эмитит toPdf
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
и оно по кругу гоняет ясен пень
источник

TS

Terry Sahaidak in NodeUA - JavaScript and Node.js in Ukraine
крім того
app.get('/generate', (req, res) => {
   emitter.emit('generatePdf');
});


тут треба респонс повернути хоч якийсь, так він тупо підвисає
источник

IG

Ivan Grekov in NodeUA - JavaScript and Node.js in Ukraine
Спасибо за ответы, но из-за того что опыта у меня мало, можно попросить вас чуть детальнее расписать?
источник

IG

Ivan Grekov in NodeUA - JavaScript and Node.js in Ukraine
Или может есть ссылки где почитать
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
браузер при переходе на адрес совершает гет запрос по нему
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
измени '/generate' на пост и это должно исправить твою ошибку
источник

KR

Kostyantin Randomnam... in NodeUA - JavaScript and Node.js in Ukraine
если я не забыл в чем проблема :)
источник

IG

Ivan Grekov in NodeUA - JavaScript and Node.js in Ukraine
Спасибо, попробую
источник

VD

Vladyslav Dukhin in NodeUA - JavaScript and Node.js in Ukraine
Ivan Grekov
Всем привет

Недавно начал изучать Node.js. Сейчас делаю небольшой генератор инвойсов с помощью puppeteer. Сначала на одной странице вводятся данные в поля textarea и есть вспомогательные кнопки для генерации,. При нажатии кнопки "Generate", я забираю при помощи фронтендового скрипта введенные данные и отправляю ajax-ом на сервер (Node.js). На стороне сервера через fs модуль создаю новый html-файл, уже без вспомогательных кнопок.

После этого, при переходе (пока нужно набирать самостоятельно в поисковой строке) на localhost:3000/create, я вывожу в браузер новый html-файл (уже без кнопок) под названием invoice.html.  Там же эмичу событие 'toPdf', которое в браузере при помощи пакета opn открывает адрес localhost:3000/generate.

Все что происходит при запросе адреса  localhost:3000/generate, это эмит события 'generatePdf', который непосредственно и преобразовывает страницу invoice.html в pdf и выводит при помощи пакет opn этот файл в браузер.

Проблема вот в чем: когда эмитится событие 'toPdf', адрес localhost:3000/generate открывается 2 раза, после чего открывается сгенерированный pdf-файл. И все бы ничего, но потом окна с /generate и pdf-файлом начинают открываться без остановки, что как бы не есть хорошо. И остановить поток открывающихся окон можно только остановкой сервера. Не могу понять в чем проблема.

Ниже оставляю код, если у кого-то есть идеи как эту проблему исправить - буду благодарен.

Ссылка на код: https://pastebin.com/QSeL6QcK
Довольно сильно намудрено я считаю для такой операции
источник

IG

Ivan Grekov in NodeUA - JavaScript and Node.js in Ukraine
Vladyslav Dukhin
Довольно сильно намудрено я считаю для такой операции
Возможно, а как сделать лучше?
источник
2019 March 20

A

Anton in NodeUA - JavaScript and Node.js in Ukraine
Какие самые популярные паттерны в node.js которые используют компании в проде?
источник

A

Alexander in NodeUA - JavaScript and Node.js in Ukraine
Anton
Какие самые популярные паттерны в node.js которые используют компании в проде?
в основном ХХП - хуяк-хуяк и в продакшн
источник

VD

Vladyslav Dukhin in NodeUA - JavaScript and Node.js in Ukraine
Anton
Какие самые популярные паттерны в node.js которые используют компании в проде?
Нет популярных или непопулярных паттернов, нет обязательства использовать или не использовать их. Мы можем знать их и применять тогда, когда чувствуем, что увидели задачу/проблему, для которой уже кто-то до нас придумал красивое решение)
источник