Size: a a a

Nuxt.js — русскоговорящее сообщество

2020 May 24

BS

Bogdan Saliuk in Nuxt.js — русскоговорящее сообщество
Patlukh Alexander
вручную это отлично работает. Придумываю, как отдать эту команду из другого node.js приложения, которое отвечает за API. Ладно, я понял, что не  туда пишу. Вопрос вообще про что-то другое
так я это и сказал :) Ты с бекенда открываешь консоль и запускаешь регенерацию
источник

PA

Patlukh Alexander in Nuxt.js — русскоговорящее сообщество
Bogdan Saliuk
так я это и сказал :) Ты с бекенда открываешь консоль и запускаешь регенерацию
сорян, неправильно понял. Вот как раз пытаюсь придумать, как это сделать. бэк — явно не мой конек. =)
Если кинете в меня полезной  ссылкой, стану улыбаться
источник

BS

Bogdan Saliuk in Nuxt.js — русскоговорящее сообщество
Patlukh Alexander
сорян, неправильно понял. Вот как раз пытаюсь придумать, как это сделать. бэк — явно не мой конек. =)
Если кинете в меня полезной  ссылкой, стану улыбаться
Я хз :) Я не писал такого. Вот кусок бекенда, если поможет. Но тут он с фронтом отчасти связан. То есть, не знаю, нужны ли сокеты в твоём случае. С фронтом связан в смысле, что с фронта отправляется команда и вывод консоли идёт на фронт. Плюс коннект разных пользователей к запущенной регенерации
источник

BS

Bogdan Saliuk in Nuxt.js — русскоговорящее сообщество
import { SubscribeMessage, WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Client, Server } from 'socket.io';
import { spawn } from 'child_process';
import UUID from 'pure-uuid';
import { SettingsService } from './settings.service';

@WebSocketGateway({ namespace: 'settings', path: '/ws' })
export class SettingsGateway {
 @WebSocketServer()
 server: Server;
 tasksQueue: Array<{ id: string }>;

 constructor(private readonly settingsService: SettingsService) {
   this.tasksQueue = [];
 }

 handleConnection(client: Client) {
   // tslint:disable-next-line:no-console
   console.log('Client connected', client.id);
   this.emitTasksQueueUpdated();
 }

 @SubscribeMessage('regenerateFrontend')
 onRegenerateFrontend(client: Client) {
   return { event: 'regenerateFrontend', data: new UUID(4).format() };
 }

 @SubscribeMessage('tasksQueue')
 onTasksQueue(client) {
   // tslint:disable-next-line:no-console
   console.log('Subscribed task tasksQueue');

   return this.tasksQueue;
 }

 async emitTasksQueueUpdated() {
   this.server.emit('tasksQueue', this.tasksQueue);
 }

 @SubscribeMessage('regenerate')
 onEvent(client: Client, taskId) {
   this.tasksQueue.push({ id: taskId });
   this.emitTasksQueueUpdated();

   const child = spawn(
     'npm',
     ['run', 'generate'],
     {
       cwd: 'path-to-frontend',
       // env: {},
       shell: true,
     },
   );

   let chunks = ''; // output

   child.stdout.on('data', (content) => {
     chunks += content;
     // @ts-ignore
     client.emit(taskId, chunks);
   });

   child.stderr.on('data', (content) => {
     chunks += content;
     // @ts-ignore
     client.emit(taskId, chunks);
   });

   child.on('close', (code) => {
     // @ts-ignore
     client.emit(`${taskId}_done`, code);

     this.tasksQueue.shift();
     this.emitTasksQueueUpdated();
   });
 }

}
источник

ВБ

Владимир Бандуристов... in Nuxt.js — русскоговорящее сообщество
Bogdan Saliuk
import { SubscribeMessage, WebSocketGateway, WebSocketServer } from '@nestjs/websockets';
import { Client, Server } from 'socket.io';
import { spawn } from 'child_process';
import UUID from 'pure-uuid';
import { SettingsService } from './settings.service';

@WebSocketGateway({ namespace: 'settings', path: '/ws' })
export class SettingsGateway {
 @WebSocketServer()
 server: Server;
 tasksQueue: Array<{ id: string }>;

 constructor(private readonly settingsService: SettingsService) {
   this.tasksQueue = [];
 }

 handleConnection(client: Client) {
   // tslint:disable-next-line:no-console
   console.log('Client connected', client.id);
   this.emitTasksQueueUpdated();
 }

 @SubscribeMessage('regenerateFrontend')
 onRegenerateFrontend(client: Client) {
   return { event: 'regenerateFrontend', data: new UUID(4).format() };
 }

 @SubscribeMessage('tasksQueue')
 onTasksQueue(client) {
   // tslint:disable-next-line:no-console
   console.log('Subscribed task tasksQueue');

   return this.tasksQueue;
 }

 async emitTasksQueueUpdated() {
   this.server.emit('tasksQueue', this.tasksQueue);
 }

 @SubscribeMessage('regenerate')
 onEvent(client: Client, taskId) {
   this.tasksQueue.push({ id: taskId });
   this.emitTasksQueueUpdated();

   const child = spawn(
     'npm',
     ['run', 'generate'],
     {
       cwd: 'path-to-frontend',
       // env: {},
       shell: true,
     },
   );

   let chunks = ''; // output

   child.stdout.on('data', (content) => {
     chunks += content;
     // @ts-ignore
     client.emit(taskId, chunks);
   });

   child.stderr.on('data', (content) => {
     chunks += content;
     // @ts-ignore
     client.emit(taskId, chunks);
   });

   child.on('close', (code) => {
     // @ts-ignore
     client.emit(`${taskId}_done`, code);

     this.tasksQueue.shift();
     this.emitTasksQueueUpdated();
   });
 }

}
Пожалуйста, не кидайте простыни кода в чат. Для этого можно воспользоваться сторонними сервисами. Спасибо.
источник

PA

Patlukh Alexander in Nuxt.js — русскоговорящее сообщество
Bogdan Saliuk
Я хз :) Я не писал такого. Вот кусок бекенда, если поможет. Но тут он с фронтом отчасти связан. То есть, не знаю, нужны ли сокеты в твоём случае. С фронтом связан в смысле, что с фронта отправляется команда и вывод консоли идёт на фронт. Плюс коннект разных пользователей к запущенной регенерации
спасибо, Богдан. Я улыбнулся и ушел читать и писать
источник

AD

Alexander Dudaev in Nuxt.js — русскоговорящее сообщество
Так что, какие там проблемы могут быть?)
источник

AD

Alexander Dudaev in Nuxt.js — русскоговорящее сообщество
Переслано от Alexander Dudaev
кто-нибудь знает с чем может быть связано:
при перезагрузке страницы /pages/_id.vue
с ssr сначала приходит /, а потом уже vue переходит на /pages/_id.vue
Причем только на проде, локально все норм, сразу /pages/_id.vue выдается
источник

AD

Alexander Dudaev in Nuxt.js — русскоговорящее сообщество
Переслано от DreaMinder
дай угадаю, деплоил статику на aws?
источник

AD

Alexander Dudaev in Nuxt.js — русскоговорящее сообщество
Переслано от Alexander Dudaev
на DO
источник

D

DreaMinder in Nuxt.js — русскоговорящее сообщество
Alexander Dudaev
Переслано от Alexander Dudaev
на DO
статику на ДО?  
в нжинксе неправильно статический сервер подключен, замаплен на /index.html как будто приложение чисто спа
источник

D

DreaMinder in Nuxt.js — русскоговорящее сообщество
Patlukh Alexander
Не совсем. Мне хочется генерировать статические страницы по динамическим роутам, страницы генерятся на основе массива в апи. Если делать вручную, это все работает. Но я пытаюсь придумать какую-то автоматизацию: обновил запись в апи, запустилось generate на той же линукс-машине
вообще это делается многими людьми за счет CI. Почитай про нетлифай например. Но если хочется на своем сервере это организовать, нужно написать нодо-скрипт который будет слушать пост-запрос и тригерить генерейт програмно -  https://github.com/nuxt/nuxt.js/issues/3798
источник

PA

Patlukh Alexander in Nuxt.js — русскоговорящее сообщество
DreaMinder
вообще это делается многими людьми за счет CI. Почитай про нетлифай например. Но если хочется на своем сервере это организовать, нужно написать нодо-скрипт который будет слушать пост-запрос и тригерить генерейт програмно -  https://github.com/nuxt/nuxt.js/issues/3798
Спасибо! Да, хочется на своём сервере. За ишью спасибо, там кажется, есть полезное. В сторону нодо-скрипта и спрашивал как раз. Думал, вдруг у кого-то есть пример уже написанный. Но вода камень точит, все получится. Спасибо еще раз за подсказки.
источник

AD

Alexander Dudaev in Nuxt.js — русскоговорящее сообщество
DreaMinder
статику на ДО?  
в нжинксе неправильно статический сервер подключен, замаплен на /index.html как будто приложение чисто спа
Оооо, спасибо)))
источник

AD

Alexander Dudaev in Nuxt.js — русскоговорящее сообщество
DreaMinder
статику на ДО?  
в нжинксе неправильно статический сервер подключен, замаплен на /index.html как будто приложение чисто спа
++
источник

N

Nano.Karmabot.chat in Nuxt.js — русскоговорящее сообщество
Swell! DreaMinder got +1 from DudaevAR. 3 karma in total.
источник

SN

Ssap Napier in Nuxt.js — русскоговорящее сообщество
Оо, у вас даже карма есть
источник

SN

Ssap Napier in Nuxt.js — русскоговорящее сообщество
А что даёт?
источник

SN

Ssap Napier in Nuxt.js — русскоговорящее сообщество
Или просто, геймефикация для мотивации?)
источник

D

DreaMinder in Nuxt.js — русскоговорящее сообщество
источник