Начать Node.js проект с работника - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть требование для запуска проекта node js с рабочими сценариями

Моя структура папок выглядит следующим образом

Projects 
    app.js //starting script 
    controllers 
    services 
    routes 
    workers 
        worker.js // worker logic 
        workers.js //forky script to start worker.js file 

В моем пакете json файл, указанный как

{
  "name": "project",
  "version": "1.0.0",
  "main": "app.js",
  "scripts": {
    "start": "node app.js && ./workers/workers "
  }
}

работников. js

const { cpus } = require('os');
const { fork } = require('child_process');
const numWorkers = cpus().length;
console.log('numWorkers', numWorkers);
for (let i = 0; i < numWorkers; i += 1) {
  fork('./worker');
}

Я запускаю свой проект с помощью npm start, здесь приложение. js файл запущен, но мой рабочие не начинали. Я не уверен, что это способ запустить рабочий проект вместе с приложением. Ваша помощь очень ценится.

Спасибо

1 Ответ

1 голос
/ 04 апреля 2020

ваши файловые работники. js никогда не позвонит. Я дам вам краткое объяснение. Согласно вашему пакету. json Запустите скрипт "node app. js && ./workers/workers" worker. js Файл будет вызываться только после успешного выполнения приложения. js file.But в приложении. * У файла 1011 * есть сервер, прослушивающий какой-то порт xxxx, поэтому файл приложения. js никогда не остановит его выполнение, если вы не остановите его с помощью команды ctrl + c. Но только после завершения выполнения приложения. js file ваш файл. js будет вызываться в соответствии с вашим стартовым скриптом. Лучший способ вызвать ваших работников. js файл - вызвать его в вашем приложении. js file ex: -

const app = require('express')();
require('./workers/workers.js');
app.listen(3000);

или еще одним способом (обычно я не рекомендую это для вашего случая использования) используйте npm -run-all

"start": "npm-run-all --parallel server workers",
"server":"node server.js",
"workers":"node ./workers/workers.js"
...