Member 12612408 Ответов: 1

Как экспортировать модули узлов ?


Я читаю каталог и экспортирую имена файлов с помощью обратных вызовов, но мой модуль не отправляет данные, когда я импортирую функцию readDirectory, есть идеи, что происходит не так с нижеприведенным кодом ? мой обратный вызов возвращает значения в самом модуле, но он не отправляется при использовании экспорта.

Что я уже пробовал:

main.js

ВАР фу = требуют('ПС');
var path ='. / Logs';
функция readDirectory() {
fs. readdir(путь, функция (err, элементы) {
вернуться filesData(пункты);
});
}
функция filesData(items) {
ВАР данные = формат JSON.преобразовать в строки(элементы)
консоли.данные журнала('модуль',сведения);
возвращать данные;


}
экспорт.readDirectory = readDirectory;

app.js

var readDirectory = require ('. / main');
ВАР параметр obj = readDirectory.readDirectory();

консоли.журнала(в формате JSON.преобразовать в строки(параметр obj));

1 Ответов

Рейтинг:
1

Mayank_Gupta_

Попробуйте выполнить следующий код:


directoryOps.js

(function(directoryOps) {

  var fs = require('fs');
  var path = './Logs';

  function filesData(items) {
    var data = JSON.stringify(items)
    console.log('data from module',data);
    return data;
  }

  directoryOps.readDirectory = function() {
    fs.readdir(path, function(err,items) {
      return filesData(items);
    });
  };

})(module.exports);


App.js
var directoryOps = require('./directoryOps');
var obj = directoryOps.readDirectory();


Извините за изменения, которые я внес в имя файла.

**Записка:

А также то, как вы сейчас создаете "main.js", он добавит переменные типа "fs, path, filesData, readDirectory" в глобальную область видимости и, следовательно, загрязнит ее . Поэтому лучше выполнять эту функцию как часть IIFE (анонимная функция). Это не добавит переменную в глобальную область видимости, сохраняя вашу область чистой.

Надеюсь, это поможет...