我有一个目录
我试图编写一个函数来将这三个模块导入数组,然后返回该数组。我可以进入REPL并使用
然而,当我尝试运行以下函数来自动化此过程时,我会收到错误消息
tmp
,其中包含3个测试node.js模块[mod0.js, mod1.js, mod2.js]
。我试图编写一个函数来将这三个模块导入数组,然后返回该数组。我可以进入REPL并使用
var x = require("./tmp/mod0");
等导入每个文件而没有任何问题。然而,当我尝试运行以下函数来自动化此过程时,我会收到错误消息
[Error: Cannot fine module './tmp/mod0']
。var _importFiles = function(path, files){
var moduleList = []
, trimmedName;
files.forEach(function (element, index, array){
if (_fs.lstatSync(path + "/" + element).isFile()){
trimmedName = element.substring(0, (element.length - 3));
moduleList.push(require("./" + path + "/" + trimmedName));
}
});
return moduleList;
};
我将'tmp'
作为path
参数传入,并将fs.readdirSync(path)
的输出作为files
参数传入。
如果我在if
块中检查process.cwd();
,它与REPL控制台的匹配。
我正在尝试弄清楚为什么在REPL中手动执行时可以正常工作,但自动化时不行。
_importFiles
函数顶部使用path = path.join(__dirname, path)
,以确保传入的path
相对于当前目录。请注意,path.join
是 Node 的一个函数,因此您需要重命名函数的path
参数以避免冲突。 - joshuapoehls