如果我创建一个 test
目录并将 foo.js
放入其中,那么我就可以运行
node test/*
运行目录中的所有文件就好了。但是如果在父目录中创建一个js文件并让它执行
spawn('node', ['test/*']);
然后它给我 stderr 输出
Error: Cannot find module '/mypath/test/*'
我开始意识到这是因为 *
是 shell 提供的便利(对吗?)。所以,我的问题是:
- 有什么方法可以在不使用
fs
读取test
目录内容的情况下完成我想要的spawn
操作? - shell 到底如何翻译
test/*
,以及是否可以从我的应用程序中利用这种强大的功能?
最佳答案
* 功能(以及 ?、{} 等)由 Glob 提供.
幸运的是,有人为 glob 进行了 Node.JS 绑定(bind) - node-glob .
使用npm install glob
安装它,然后像这样使用它(未经测试):
var glob = require('glob');
glob('test/*', null, function (err, matches) {
matches.forEach(function (match) {
spawn('node', match);
});
})
关于bash - Node.js 生成和 `*` 用于选择多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5509009/