Node.js产卵和`*`select多个文件
如果我创build一个test
目录并将foo.js
放入其中,那么我可以运行
node test/*
运行目录中的所有文件就好了。 但是,如果在父目录中创build一个js文件,并做到这一点
spawn('node', ['test/*']);
那么它给了我stderr输出
错误:找不到模块'/ mypath / test / *'
我已经意识到,这是因为*
是由shell提供的便利(右?)。 所以,我的问题是:
- 有没有办法做我想要的
spawn
而不使用fs
来读取test
目录的内容? - 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
则没有。