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