我创建了一个项目,以递归方式从目录数组中查找有效的媒体文件类型。问题是我的两个事件发射器工作正常而两个没有。我已阅读文档,观看了一些视频,并搜索了此网站以寻找答案。我认为有一些基本的东西,我缺失或不理解,这是阻碍。
我有一个名为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个事件。
我执行的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...}
问题是我的开始"事件和"结束"事件被忽略了,但我不确定为什么。