Node.js产卵和`*`select多个文件

如果我创build一个test目录并将foo.js放入其中,那么我可以运行

 node test/* 

运行目录中的所有文件就好了。 但是,如果在父目录中创build一个js文件,并做到这一点

 spawn('node', ['test/*']); 

那么它给了我stderr输出

错误:找不到模块'/ mypath / test / *'

我已经意识到,这是因为*是由shell提供的便利(右?)。 所以,我的问题是:

  1. 有没有办法做我想要的spawn而不使用fs来读取test目录的内容?
  2. shell如何翻译test/* ,是否有可能从我的应用程序中获取这种超棒的力量?

*function(与?,{}等一起)由Glob提供。

幸运的是,有人为glob- node-glob做了Node.JS绑定。

npm install glob安装它,然后像这样使用它(未经testing):

 var glob = require('glob'); glob('test/*', null, function (err, matches) { matches.forEach(function (match) { spawn('node', match); }); }) 

API文档中所描述的谦逊的exec函数仅仅是产生subprocess的更高级别的抽象, 它确实给出了期望的结果:

 require('child_process').exec('node test/*'); 

工作正常。 似乎这个spawn逃避了它的论点,而exec则没有。