Как реализовать дочерний процесс fork в Hapijs? - PullRequest
0 голосов
/ 04 марта 2019

Может кто-нибудь помочь мне, как реализовать дочерний процесс fork в hapijs?Я получил эту ошибку

Ошибка: метод не возвратил значение, обещание или не выдал ошибку

при запуске указанной ниже программы.

Контроллер

const path = require('path');
import { fork } from 'child_process';
public async longComputationProcess(request: IRequest, h: Hapi.ResponseToolkit) {
    this.server.log('INFO', 'Report generation starts.');
    try {
      let payload: any = request.payload;
      const requesterId = request.auth.credentials.id;
      const parentPath = path.join(__dirname, '../../services');
      const forkedProcess = fork(`./child-process-service.js`, [payload, requesterId], { cwd: parentPath });
      forkedProcess.send(3e9);
      forkedProcess.on('message', async (sum) => {
        console.log('CP - Total Sum: ', sum);
                                return h.response(sum);
      });
      forkedProcess.on('close', (code) => {
        forkedProcess.kill();
      });
    } catch (err) {
      this.server.log('ERROR', err);
      return Boom.badImplementation(
        'Internal server error. Please contact admin.'
      );
    }
  }
}

child-process-service.js

process.on('message', async (limit) => {
  const sum = await longComputation(limit);
  process.send(sum);
});
const longComputation = (limit) => {
  let sum = 0;
  for (let i = 0; i < limit; i += 1) {
    sum += i;
  }
  return sum;
};

Спасибо

...