是否有一种方法可以在节点中同步执行多个JavaScript文件?
因此,在Node中,我可以使用如下命令执行JavaScript文件:是否有一种方法可以在节点中同步执行多个JavaScript文件?,javascript,node.js,Javascript,Node.js,因此,在Node中,我可以使用如下命令执行JavaScript文件: $ node src/someFile.js 但是有没有一种方法可以同步执行给定目录中的所有JavaScript文件(一个文件执行,然后在完成后执行下一个文件,等等)?基本上,有没有一个命令会产生类似的效果 $ node src/firstFile.js $ node src/secondFile.js $ node src/thirdFile.js ... 我试过这样的命令 $ node src/*.js 但是没有成功
$ node src/someFile.js
但是有没有一种方法可以同步执行给定目录中的所有JavaScript文件(一个文件执行,然后在完成后执行下一个文件,等等)?基本上,有没有一个命令会产生类似的效果
$ node src/firstFile.js
$ node src/secondFile.js
$ node src/thirdFile.js
...
我试过这样的命令
$ node src/*.js
但是没有成功
如果没有这样的命令,那么执行类似操作的最佳方法是什么?使用POSIX shell:
src/*.js中js的$;执行节点“$js”;完成
使用POSIX外壳:
src/*.js中js的$;执行节点“$js”;完成
我不确定这是否适用于您,因为这是shell的一项功能,不是节点运行时的功能,而是
src/*.js中f的;执行节点“$f”;完成
或者在Powershell中:
Get ChildItem.\*.js|Foreach对象{
节点$\u
}
我不确定这是否适用于您,因为这是shell的一项功能,不是节点运行时的功能,而是
src/*.js中f的;执行节点“$f”;完成
或者在Powershell中:
Get ChildItem.\*.js|Foreach对象{
节点$\u
}
您可以使用spawn从类节点运行节点
进程
(function() {
var cp = require('child_process');
var childProcess = cp.spawn('node', [`src/firstFile.js`]);
此时,您必须添加一些侦听器:
// now listens events
// Listen for an exit event:
child.on('exit', function(exitCode) {
console.log("Child exited with code: " + exitCode);
return resolve(exitCode);
});
// Listen for stdout data
child.stdout.on('data', function(data) {
console.log(data.toString());
});
// child error
child.stderr.on('data',
function(data) {
console.log('err data: ' + data);
// on error, kill this child
child.kill();
}
);
}).call(this);
当然,您需要在这里序列化执行,但这很容易,因为您有子项('exit')
,它告诉您进程已结束,因此您可以启动下一个进程
查看我的示例工作解决方案,该解决方案在
节点中运行多个进程,并等待执行结束/加入。您可以使用spawn从类似节点的节点运行节点
进程
(function() {
var cp = require('child_process');
var childProcess = cp.spawn('node', [`src/firstFile.js`]);
此时,您必须添加一些侦听器:
// now listens events
// Listen for an exit event:
child.on('exit', function(exitCode) {
console.log("Child exited with code: " + exitCode);
return resolve(exitCode);
});
// Listen for stdout data
child.stdout.on('data', function(data) {
console.log(data.toString());
});
// child error
child.stderr.on('data',
function(data) {
console.log('err data: ' + data);
// on error, kill this child
child.kill();
}
);
}).call(this);
当然,您需要在这里序列化执行,但这很容易,因为您有子项('exit')
,它告诉您进程已结束,因此您可以启动下一个进程
请看我的示例工作解决方案,该解决方案在节点中运行多个进程,并等待执行结束/连接。如果从shell调用每个进程不是一个困难的要求,我将使用shell中的单个节点进程来启动它们。此节点脚本将:
- 遍历模块目录
- 需要执行它的第一个回调,并传递一个回调,模块将在完成时调用该回调
- 调用完整回调后,执行目录中的下一个脚本李>
如果从shell调用每一个对象不是一个困难的要求,那么我将使用shell中的单个节点进程来启动它们。此节点脚本将:
- 遍历模块目录
- 需要执行它的第一个回调,并传递一个回调,模块将在完成时调用该回调
- 调用完整回调后,执行目录中的下一个脚本李>
使用shell特定功能的答案是否为您所接受?(我看你已经试过了)@ᅵZVᅵ 我目前正在运行一台Windows计算机,因此shell脚本对我个人来说不是最佳选择-但是如果它确实解决了这个问题,那么它应该是一个完全有效的解决方案。我将使用powershell结果来确定我的答案-我认为最好从shell执行此操作,除非您需要捕获它们的退出代码,在CreateRemoteThread
等中还原他们的SEH链。我不在windows计算机上,请告诉我PS脚本是否适合您。您是否接受使用特定于shell的功能的答案?(我看你已经试过了)@ᅵZVᅵ 我目前正在运行一台Windows计算机,因此shell脚本对我个人来说不是最佳选择-但是如果它确实解决了这个问题,那么它应该是一个完全有效的解决方案。我将使用powershell结果来确定我的答案-我认为最好从shell执行此操作,除非您需要捕获它们的退出代码,在CreateRemoteThread
等中恢复他们的SEH链。我不在我的windows计算机上,请告诉我PS脚本是否适合您。因此,对于这一点,node没有简单的本机一行解决方案,但它需要编写一个文件(如您上面所建议的)?一行解决方案无法控制进程状态,退出代码和pid
。当然,您可以编写一个bash
脚本,该脚本采用pid
,在for循环语句中执行node$filename
,等等,但您需要一个主管来处理所有这些过程,这些过程可以用bash、python、perl或…node编写。啊,因此node本身没有简单的一行程序解决方案,但是它需要编写一个文件(就像你上面建议的那样)?一行解决方案不会让你控制进程状态、退出代码和pid
。当然,您可以编写一个bash
脚本,该脚本采用pid
,在for循环语句中执行node$filename
,等等,但您需要一个主管来处理所有这些进程,这些进程可以用bash、python、perl或…node编写。