开始 Node.js 个项目与工作人员

Start Node.js project with worker

我需要 运行 一个带有工作脚本的节点 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 "
  }
}

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' 开始我的项目,这里 app.js 文件是 运行ning 但我的工作人员没有开始。我不确定这是与应用程序一起启动工作项目的方式。非常感谢您的帮助。

谢谢

您的文件 workers.js 永远不会调用。我会给你简短的解释。根据您的 package.json 启动脚本 "node app.js && ./workers/workers" workers.js 文件只会在 app.js 文件中成功执行 app.js file.But 后调用,我们有一个服务器侦听某个 xxxx 端口,因此 app.js 文件将永远不会停止执行,除非您使用 ctrl+c 命令停止它。但只有在 app.js 文件完成执行后,你的 wokers.js 文件才会根据你的开始被调用 script.The 调用你的 workers.js 文件的最佳方法是在你的 app.js 文件例如:-

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

或另一种方法(通常我不建议您使用这种方法)使用 npm-运行-all

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