如果我创建一个test
目录并将foo.js
放入其中,那么我可以运行
node test/*
很好地运行目录中的所有文件。但是如果在父目录中创建一个js文件并让它执行
spawn('node', ['test/*']);
然后它给了我stderr输出
错误:找不到模块'/ mypath / test / *'
我已经意识到这是因为*
是shell提供的便利(对吧?)。所以,我的问题是:
spawn
读取fs
目录的内容的情况下执行我想要的test
?test/*
,是否有可能从我的应用中获取这种强大功能?答案 0 :(得分:2)
*功能(以及?,{}等)由Glob提供。
幸运的是,有人为glob - node-glob创建了Node.JS绑定。
使用npm install glob
安装它,然后像这样使用它(未经测试):
var glob = require('glob');
glob('test/*', null, function (err, matches) {
matches.forEach(function (match) {
spawn('node', match);
});
})
答案 1 :(得分:2)
简单的exec
函数,在API文档中描述为仅仅是产生子进程的高级抽象, 会产生所需的结果:
require('child_process').exec('node test/*');
工作正常。 spawn
似乎逃避了它的论点而exec
没有。{/ p>