首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用chokidar加载文件

使用chokidar加载文件
EN

Stack Overflow用户
提问于 2017-08-15 17:53:46
回答 1查看 415关注 0票数 0

因此,我一直试图使用chokidar作为加载添加在某个文件夹中的命令的一种方式,现在考虑到我可以找到的chokidar的唯一文档是github页面,提供的唯一示例是警报,由于两个问题,我一直难以实现这一点:我无法返回主函数的任何值--据我所知,这是因为chokidar继承了EventEmitter,但是使用包装函数应该可以解决这个问题?处理在chokidar函数中加载的文件可能会非常复杂。

因为所讨论的程序需要加载命令并在不同的点进行解析,所以解析将发生异步的。

所以我的问题很简单,我会怎么做?

下面是代码:

代码语言:javascript
复制
export default function(dir) {
    let chokidar = require('chokidar');
    let fs = require('fs');
    let log = console.log.bind(console);


    let watcher = chokidar.watch(dir, {
        ignored: /(^|[\/\\])\../, 
        persistent: true
    });
    let files;
    let test;
    files = "TEST"

    watcher
    .on('addDir', path => {
        log(`Directory ${path} has been found`);
    })
    .on('add', path => {
        log(`Before : ${files}`)
        test = path
        log(`After  : ${files}`)
        //require(path)
        log(`File ${path} has been found`)
    })
    .on('ready', () => {
        log(files, test)
        files = test;
        log(files, test)
    });
    log(files)
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-20 13:59:35

在与chokidar +事件混在一起之后,答案是相当简单的:

本质上,考虑到每个事件或多或少都是自己的小程序,但是谁不能/不能直接返回值。

因此,您可以将所需的数据发送给将具体处理的另一个事件。

在我的"main.js“文件中,我需要做的就是:

代码语言:javascript
复制
let events = require('events');
var loader = new events.EventEmitter();
watchdog(cmddir, (dir) => {
    loader.emit("loadcommand", dir)


loader.on('loadcommand', (file) => {
    require(file);
});

以下是有关event.emitters的一些相关信息:

eventemitter

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45698628

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档