У меня есть каталог tmp
, который имеет 3 модуля test node.js [mod0.js, mod1.js, mod2.js]
.Не удается найти модуль при попытке автоматического импорта модулей node.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
.
Если я проверил process.cwd();
в блоке if
, он будет соответствовать блоку REPL.
Я пытаюсь понять, почему он работает, когда я вручную делаю это в REPL, но не автоматизирован.
Попробуйте использовать 'path = path.join (__ dirname, path)' в верхней части вашей функции '_importFiles', чтобы убедиться, что переданный в' path' относительно текущего каталога. Обратите внимание, что 'path.join' - это функция из Node, поэтому вам нужно будет переименовать аргумент' path' вашей функции, чтобы предотвратить конфликт. – joshuapoehls