0

我创建了一个从目录数组中递归查找有效媒体文件类型的项目。问题是我的两个事件发射器工作正常,两个没有。我已经阅读了文档,观看了一些视频,并搜索了该站点以寻找答案。我认为有一些基本的东西我遗漏或不理解正在阻碍。

我有一个名为 directoryWatch.js 的文件,其中包含以下代码。

let util = require('util');
let EventEmitter = require('events').EventEmitter;
let recursive = require('recursive-readdir');
let mm = require("minimatch");
let local = require('../_localData/environmentConfig');

let validMediaFiles = function(dirs){
    let self = this;
    self.emit('start',`${local.dirScanStart}`);
    dirs.forEach(function(dirName){
        recursive(dirName, function (err, files) {
            if(err){
                self.emit('error',`${local.dirScanError} ${dirName}`);
            } else{
                self.emit('success',`${local.dirScanSuccess} ${dirName}`,
                    mm.match(files, local.validFileExtensions, 
                   {matchBase: true, nocase: true, nonull: true}));
            }
        });
    });
    self.emit('end',`${local.errScanMsg}`);
};

util.inherits(validMediaFiles, EventEmitter);

module.exports = validMediaFiles;

我有 4 个要发出的事件。

  1. 查看目录的开始步骤。
  2. 尝试查找目录的错误。
  3. 读取目录的成功。
  4. 查看目录的最后一步。

我正在执行的 main.js 文件如下所示。

let local = require('./_localData/environmentConfig');
let dirWatch = require('./fileIO/directoryWatch');

let results = new dirWatch(local.directories);

results.on('start',function(msg){
    console.log(msg);
});

results.on('error',function(msg){
    console.log(msg);
});

results.on('success',function(msg,files){
    console.log(msg);
    console.log(files);
});

results.on('end',function(msg){
    console.log(msg);
});     

Powershell 中的输出如下所示

PS G:\Javascrpt Projects\Node\Misc\Test2>
PS G:\Javascrpt Projects\Node\Misc\Test2> node main.js
Error scanning directory: ssdfdsfasf
Getting media from: G:\Javascrpt Projects\Node\Misc\Test2\TestFiles\music
Getting media from: G:\Javascrpt Projects\Node\Misc\Test2\TestFiles\music2
{....big list of file names goes here...}

问题是我的“开始”事件和“结束”事件被忽略了,但我不知道为什么。

4

0 回答 0